3 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
@Bean注釋可以出現(xiàn)在方法上,這是注冊(cè) bean 的一種可能性。這種方式BeanFactory知道這個(gè) bean 并使用從方法名 ( "passwordEncoder") 派生的名稱來限定它。另一種方法是明確命名它們:
?@Bean({"b1", "b2"}) // bean available as 'b1' and 'b2', but not 'myBean'
?public MyBean myBean() {
? ? ?// instantiate and configure MyBean obj
? ? ?return obj;
?}
在示例中@Bean定義為將抽象綁定PasswordEncoder到實(shí)現(xiàn)BCryptPasswordEncoder。否則 spring 不會(huì)知道,如果掃描中有更多的類,那么具體的類是什么。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
您需要閱讀有關(guān)依賴注入的更多信息,DI 是一種解決許多問題的模式,特別是與Program to Interface一起使用時(shí),在這種情況下,如果您不編寫它,它將強(qiáng)制它每次@Bean
創(chuàng)建多個(gè)實(shí)例BCryptPasswordEncoder
調(diào)用該方法。而如果你編寫@Bean
bean 生命周期的實(shí)例化和管理,則由 管理Spring Container
,這再次確保僅創(chuàng)建單個(gè)實(shí)例,因?yàn)?code>Singleton作用域是 spring 中的默認(rèn)實(shí)例。

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
@Bean注解用于將任何對(duì)象/方法注冊(cè)到Spring容器作為Bean。
在您使用passwordEncoder()方法作為bean的問題中,它使用@Bean注釋進(jìn)行標(biāo)記,以便可以輕松地將其注入到其他對(duì)象并使用。
添加回答
舉報(bào)