3 回答

TA貢獻1827條經驗 獲得超8個贊
@Bean注釋可以出現在方法上,這是注冊 bean 的一種可能性。這種方式BeanFactory知道這個 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到實現BCryptPasswordEncoder。否則 spring 不會知道,如果掃描中有更多的類,那么具體的類是什么。

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

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