假设我们有一个原型范围的bean。
public class FooConfiguration {
@Bean
@Scope("prototype")
public Foo foo(@Autowired Bar bar) {
return new Foo(bar);
}
}
我们正在将该bean注入类TheDependent
。
@Component
public class TheDependent {
@Autowired
private Foo foo;
}
但是还有另一个。
@Component
public class AnotherOne {
@Autowired
private Foo foo;
}
在每个@Autowired
中,将创建一个新的Foo
实例,因为它用@Scope("prototype")
进行了注释。
我想从工厂方法FooConfiguration#foo(Bar)
中访问“依赖”类。可能吗? Spring可以向我注入某种 context 对象到factory方法的参数中,以提供有关注入点的信息吗?
答案 0 :(得分:2)
是的。您可以将DefaultListableBeanFactory
注入到bean工厂方法的参数中,该容器是包含所有bean信息的spring bean容器:
@Bean
@Scope("prototype")
public Foo foo(@Autowired Bar bar , DefaultListableBeanFactory beanFactory) {
//Get all the name of the dependent bean of this bean
for(String dependentBean : beanFactory.getDependentBeans("foo")){
//Get the class of each dependent bean
beanFactory.getType(dependentBean);
}
return new Foo(bar);
}