我有多个互斥数据源,我想根据配置文件中定义的属性配置将哪个实现注入/自动装配到控制器中。
我正在考虑类似@Qualifier 的东西,但我不是弹簧专家,所以无法弄清楚机制。
目的是避免产生复杂的 if/else。
有任何想法吗?
我有多个互斥数据源,我想根据配置文件中定义的属性配置将哪个实现注入/自动装配到控制器中。
我正在考虑类似@Qualifier 的东西,但我不是弹簧专家,所以无法弄清楚机制。
目的是避免产生复杂的 if/else。
有任何想法吗?
您可以使用context:property-placeholder
and来解决问题@Qualifier
。
它将如下所示:
应用程序属性
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机制。