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 因為它是單例的。

TA貢獻1765條經驗 獲得超5個贊
@Bean DataSource sqlDataSource() {
// some logic
}
這定義了 DataSource 的單例實例。因此,每次您請求 SomeObject 的實例時,都會創建一個新的 SomeObject(雖然它是在原型范圍內定義的),但它們都將共享相同的 DataSource 對象(因為它是一個單例 bean)。
添加回答
舉報