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注释进行标记,以便可以轻松地将其注入到其他对象并使用。
添加回答
举报