我通常只是将@Autowire 东西放入弹簧对象中。但是我遇到了一种情况,我需要动态创建一些需要可以自动装配的值的对象。
我应该怎么办?我能做的就是手动将自动装配的值传递给新对象的构造函数。我想做的只是在创建每个新对象时自动装配它。
@Service
public class Foo {
@Autowired private Bar bar;
/** This creates Blah objects and passes in the autowired value. */
public void manuallyPassValues() {
List<Blah> blahs = new LinkedList<Blah>();
for(int i=0; i<5; ++i) {
Blah blah = new Blah(bar);
blahs.add(blah);
}
// ...
}
/** This creates Blah objects and autowires them. */
public void useAutowire() {
List<Blah> blahs = new LinkedList<Blah>();
for(int i=0; i<5; ++i) {
// How do I implement the createAutowiredObject method?
Blah blah = createAutowiredObject(Blah.class);
blahs.add(blah);
}
// ...
}
}
理想情况下,我不会在这个 bean 中有任何配置信息。它是自动装配的,因此它需要执行新 bean 的自动装配的任何对象都应该通过自动装配它们来提供给它。