亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過方法調用與新運算符獲取 Spring bean

通過方法調用與新運算符獲取 Spring bean

HUX布斯 2022-06-04 10:41:08
我對這個小話題感到困惑。我在某處讀到,如果一個類用 注釋@Component,它是 spring 管理的 bean,每當需要時,spring 都會提供它。我將它與 bean 的范圍混淆了。讓我解釋:比方說一堂課@Componentpublic class Example{ }如果我在其他類中使用 實例化這個類new Example(),容器會一直為我提供相同的 Example 對象嗎?還是每次都會返回我新的對象?這是令人困惑的部分:如果在同一個班級我有兩個這樣的豆子:@Componentpublic class Example {    @Bean DataSource sqlDataSource() {         // some logic    }    @Bean @Scope("prototype") SomeObject getSomeObject() {         return new SomeObject(sqlDataSource()); //**    }}在這種情況下會發生什么?每次請求 SomeObject bean 時,sqlDataSource() 方法調用都會一次又一次地返回相同的對象,還是每次請求 SomeObject 時都會返回新的 DataSource 實例?請幫忙。
查看完整描述

2 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

是一個方法級別的注解,指示 Spring 在調用該方法時創建一個 bean。這意味著具有與 XML 配置中的標記相同的功能。

這個注解必須在 @Configuration 注解的類中使用,否則如果你從另一個方法調用該方法,它將是一個普通的 java new 操作,而不是 spring 的。請參閱這篇文章-> @Bean inside class with @Configuration and witout

牢記這一點 new SomeObject(sqlDataSource()); 將等于 new SomeObject(new SqlDataSource());

如果您使用 @Configuration 注釋 Example 將會發生的是,您將始終獲得一個具有相同 sqlDataSource 對象的新 SomeObject 實例,這意味著 Spring 將只創建一個 sqlDataSource 因為它是單例的。


查看完整回答
反對 回復 2022-06-04
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

@Bean DataSource sqlDataSource() {

     // some logic

}

這定義了 DataSource 的單例實例。因此,每次您請求 SomeObject 的實例時,都會創建一個新的 SomeObject(雖然它是在原型范圍內定義的),但它們都將共享相同的 DataSource 對象(因為它是一個單例 bean)。


查看完整回答
反對 回復 2022-06-04
  • 2 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號