假设我们有两个 spring 配置文件:ConfigA.java
和 ConfigB.java
。
下面是 ConfigA.java
的样子:
@Configuration
class ConfigA {
@Scope("prototype")
@Bean public Foo fooPrototype() {
return new Foo(params);
}
}
现在我想将 Foo
的几个实例注入(inject)到 ConfigB.java
中声明的多个单例范围的 bean 中:
@Configuration
@Import(ConfigA.class)
class ConfigB {
@Bean public Bar bar() {
return new Bar(*** how to inject Foo instance here? ***);
}
@Bean public Buzz buzz() {
return new Buzz(*** how to inject Foo instance here? ***);
}
}
如果我只有一个配置文件,我会简单地用 fooPrototype()
替换星号中的 block 。
但是,如果 fooPrototype()
在不同的配置文件中声明,如何将不同的 Foo 实例注入(inject) bar() 和 buzz() bean?
最佳答案
这看起来类似于 Spring 文档中的示例 §5.12.5 Composing Java-based configurations .
同一页面提供了一个解决方案:您可以 Autowiring 配置 bean。
@Configuration
@Import(ConfigA.class)
class ConfigB {
@Autowired ConfigA configA;
@Bean public Bar bar() {
return new Bar(configA.fooPrototype());
}
@Bean public Buzz buzz() {
return new Buzz(configA.fooPrototype());
}
}
关于java - 使用在不同的基于 java 的 Spring 配置文件中定义的原型(prototype) beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26736331/