gpt4 book ai didi

java - 从 bean factory 访问 injectee 组件

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:29 25 4
gpt4 key购买 nike

假设我们有一个原型(prototype)范围的 bean。

public class FooConfiguration {
@Bean
@Scope("prototype")
public Foo foo(@Autowired Bar bar) {
return new Foo(bar);
}
}

我们将这个 bean 注入(inject)到一个类 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 对象注入(inject)到工厂方法的参数中,提供有关注入(inject)点的信息?

最佳答案

是的。您可以将 DefaultListableBeanFactory 注入(inject)到 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);
}

关于java - 从 bean factory 访问 injectee 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53944088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com