第一次使用带有注释的Spring。我正在尝试定义一个单例 bean,例如:
@Bean
public ActionProducer actionProducer() {
return new ActionProducer();
}
但我觉得这不是正确的方法,因为每次都会返回一个"new"bean。我应该像下面这样定义吗?
@Bean
public ActionProducer actionProducer() {
if (bean==null)
bean=new ActionProducer();
return bean
}
提前致谢。
最佳答案
对于每个@Configuration
类,Spring将创建一个代理来控制对这些@Bean
方法的调用。因此,如果您有一个 @Bean 方法,该方法应该创建一个单例 bean(如果您没有指定其他范围,则默认情况下会这样做),代理将确保该方法仅被调用一次创建bean。所有进一步的调用都会被代理拦截,并且已经存在的 bean 将被返回。
这样,如果该类中有其他依赖于该 bean 的 bean,您甚至可以只调用该 bean 方法,而无需考虑作用域、重复实例等:
@Bean
public AnotherClass anotherClass() {
return new AnotherClass(actionProducer());
}
因此,不要绕过 Spring 功能,只需实现如下方法即可:
@Bean
public ActionProducer actionProducer() {
return new ActionProducer();
}
关于java - 理解 Spring 4 注释 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34204909/