我是 Spring 和 Spring Boot 的新手,所以希望这不是一个愚蠢的问题。
我有一个带有多个实现的接口。实现注释为@Component("NameOfImpl")
.
我的目标是使用选定的实现自动装配 bean。在正常情况下我可以这样做@Autowired @Qualifier("NameOfImpl")
,但我的问题是我想在以下方法中选择一个实现:
public void doSomethingMethod(){
for(String line: configFile){
String[] values = line.split(";");
if (values[0].equals("A")) {
//here I want to select an bean implementation
}
else if (values[0].equals("B")) {
//here I want to select another bean implementation
}
}
bean.doSomething();
}
我怎样才能做到这一点?你有什么建议?
谢谢你!
你可以要求Spring注入一个Map
豆子。映射中的键将是 bean 的名称。
如果您有一个名为Example
public interface Example {
}
以及两个实现:
@Component("foo")
public class FooExample implements Example {
}
@Component("bar")
public class BarExample implements Example {
}
你可以有一张地图Example
注入的豆子:
@Component
public class ExampleConsumer {
private final Map<String, Example> examples;
@Autowired
public ExampleConsumer(Map<String, Example> examples) {
this.examples = examples;
}
}
在这种情况下,地图将包含两个条目:
-
"foo"
-> FooExample
实例
-
"bar"
-> BarExample
实例
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)