2 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
是一個(gè)方法級(jí)別的注解,指示 Spring 在調(diào)用該方法時(shí)創(chuàng)建一個(gè) bean。這意味著具有與 XML 配置中的標(biāo)記相同的功能。
這個(gè)注解必須在 @Configuration 注解的類(lèi)中使用,否則如果你從另一個(gè)方法調(diào)用該方法,它將是一個(gè)普通的 java new 操作,而不是 spring 的。請(qǐng)參閱這篇文章-> @Bean inside class with @Configuration and witout
牢記這一點(diǎn) new SomeObject(sqlDataSource()); 將等于 new SomeObject(new SqlDataSource());
如果您使用 @Configuration 注釋 Example 將會(huì)發(fā)生的是,您將始終獲得一個(gè)具有相同 sqlDataSource 對(duì)象的新 SomeObject 實(shí)例,這意味著 Spring 將只創(chuàng)建一個(gè) sqlDataSource 因?yàn)樗菃卫摹?/p>

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
@Bean DataSource sqlDataSource() {
// some logic
}
這定義了 DataSource 的單例實(shí)例。因此,每次您請(qǐng)求 SomeObject 的實(shí)例時(shí),都會(huì)創(chuàng)建一個(gè)新的 SomeObject(雖然它是在原型范圍內(nèi)定義的),但它們都將共享相同的 DataSource 對(duì)象(因?yàn)樗且粋€(gè)單例 bean)。
添加回答
舉報(bào)