use*_*019 2 java spring spring-mvc autowired 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();
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?你有什么建议?谢谢!
你可以让Spring注入一些Map豆子.地图中的键将是bean的名称.
如果您有一个名为的接口 Example
public interface Example {
}
Run Code Online (Sandbox Code Playgroud)
两个实现:
@Component("foo")
public class FooExample implements Example {
}
@Component("bar")
public class BarExample implements Example {
}
Run Code Online (Sandbox Code Playgroud)
你可以有一张Example注入豆子的地图:
@Component
public class ExampleConsumer {
private final Map<String, Example> examples;
@Autowired
public ExampleConsumer(Map<String, Example> examples) {
this.examples = examples;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,地图将包含两个条目:
"foo"- > FooExample实例"bar"- > BarExample实例| 归档时间: |
|
| 查看次数: |
1945 次 |
| 最近记录: |