【发布时间】:2016-04-06 18:00:40
【问题描述】:
假设我有以下 Spring 上下文配置:
@Configuration
public class Configuration {
@Bean
public A a() {
return new A(b());
}
public B b() {
return new B();
}
}
如果B 实例需要的唯一位置在a() 内以用于A 实例构造,是否应该用@Bean 注释b()?
【问题讨论】:
-
您当前的设置不会使
B实例成为 Spring 托管 bean。因此,如果您希望该 bean 上的@PostConstruct等内容能够正常工作,那么它只会失败,因为 spring 无法对其进行管理。接下来,您确定这将是您需要的唯一B实例,或者您可能在多个地方都需要它,然后呢? -
那为什么不在
A中实例化B呢?或者,您可以将B设为一个bean,然后在A中声明一个字段,即@Autowired。 -
@m-deinum 我注意到here 例如,方法
consumerConfigs()被标记为@Bean...也许它也应该在其他地方使用。