Spring:配置

Spring: Configuration

在 Spring Java 配置中,假设我想在另一个 @Bean 定义中重新使用 @Bean。我可以在一个文件中执行此操作:

@Bean
public A buildA() {
    return new A();
}

@Bean
public B buildB() {
    return new B(buildA());
}

或者我可以在一个文件中配置 A 并在另一个文件中自动装配它(为简洁起见,字段注入):

@Autowired
private A a;

@Bean
public B buildB() {
    return new B(a);
}

请问,这两种可能性是不是完全一样?在我看来,第一个版本可能会实例化 A 两次,而第二个版本则不会。

我在问这个,因为在我的特殊用例中,A 正在建立与消息传递代理的连接,并且我有几个使用流的 B(我使用来自 spring 集成的 .toReactivePublisher()在 A) 中,我不想连接到代理两次或更多次。

是的,它们完全一样。多次调用 @Bean 注释方法不会创建同一 bean 的多个实例。

有关为什么没有发生的解释,请参阅