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

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

為什么passwordEncoder()作為@Bean?

為什么passwordEncoder()作為@Bean?

德瑪西亞99 2023-06-28 15:45:00
如果直接作為函數調用,為什么passwordEncoder() 被定義為@Bean?這是我正在談論的例子@Beanpublic PasswordEncoder passwordEncoder() {    return new BCryptPasswordEncoder();}user.setPassword(passwordEncoder.encode(accountDto.getPassword()));https://www.baeldung.com/spring-security-registration-password-encoding-bcrypt或者我見過人們這樣做 auth.userDetailsService(customUserDetailsService).passwordEncoder(passwordEncoder());
查看完整描述

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 不會知道,如果掃描中有更多的類,那么具體的類是什么。


查看完整回答
反對 回復 2023-06-28
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

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


查看完整回答
反對 回復 2023-06-28
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

@Bean注解用于將任何對象/方法注冊到Spring容器作為Bean。

在您使用passwordEncoder()方法作為bean的問題中,它使用@Bean注釋進行標記,以便可以輕松地將其注入到其他對象并使用。


查看完整回答
反對 回復 2023-06-28
  • 3 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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