我有一个名为MyService
的接口和几个我已添加@Qualifier
的实现,例如A,B等。我正在尝试设置环境配置文件,以便我可以选择哪一个有一个简单的属性文件。现在我必须做这样的事情:
@Value("${my.service.impl}")
private String myServiceImpl;
@Bean
public MyService myService() {
if (myServiceImpl.equals("A")) {
return new MyServiceA();
}
else if (myServiceImpl.equals("B")) {
return new MyServiceB();
}
// ...
}
但理想情况下,我可以做这样的事情:
@Autowired
@Qualifier("${my.service.impl}")
public MyService myService;
但是我发现@Qualifier不会解析表达式。它不支持表达式吗?更重要的是,是否有一种比if / else更清晰的方式告诉Spring要加载哪一个?