1

我有多个互斥数据源,我想根据配置文件中定义的属性配置将哪个实现注入/自动装配到控制器中。

我正在考虑类似@Qualifier 的东西,但我不是弹簧专家,所以无法弄清楚机制。

目的是避免产生复杂的 if/else。

有任何想法吗?

4

1 回答 1

1

您可以使用context:property-placeholderand来解决问题@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机制。

于 2013-04-17T09:14:16.853 回答