我有多个互斥的数据源,我想根据配置文件中定义的属性配置要注入/自动装入Controller的实现。
我正在想@Qualifier的一些东西,但我不是春天的专家,所以无法理解这些机制。
目的是避免产生错综复杂的if / else。
有什么想法吗?
答案 0 :(得分:1)
您可以使用context:property-placeholder
和@Qualifier
来完成这项工作。
它将如下所示:
<强> app.properties 强>
some.implementation=com.example.MyServiceImpl
弹簧上下文文件
<context:property-placeholder
location="classpath:/app.properties"/>
<bean id="myService" class="${some.implementation}" />
<强>控制器强>
@Autowired
@Qualifier("myService")
private MyService myService;
作为相反的解决方案:您可以保存属性文件bean ID,并在@Qualifier
@Qualifier("${some.implementation.bean.id}")
但是如果您使用的是Spring 3.1+,那么您可能需要查看Profiles机制。