具有不同属性名称的类似弹簧组件

时间:2013-02-08 15:58:31

标签: java spring

ActiveMQConnectionFactory使用 brokerURL 属性存储服务器地址。 TibjmsConnectionFactory使用 serverUrl 属性存储服务器地址。

是否可以在Spring配置中以可以从属性文件切换的方式定义bean? 例如:

<bean id="connectionFactory" class="${listener.connection.factory}">
    <property name="XXX" value="${in.serverUrl}" />
</bean>

其中XXX充当brokerURL或serverUrl - 取决于连接工厂。

我知道配置文件可用于实现此目的,但它看起来像一个非常简单的问题,可以轻松解决。

1 个答案:

答案 0 :(得分:0)

遗憾的是,属性名称不能基于PropertyPlaceHolderConfigurer,因此您不能基于属性值来使用它。这些是我能想到的几种方式:

  1. 如果可行,使用java @Configuration(Spring 3.2+),然后可以根据自定义属性值创建一个或另一个connectionfactory
  2. 就像你注意到但折扣一样,个人资料非常适合这种情况。
  3. 稍微过度杀伤的方法,创建一个FactoryBean,根据您传递给自定义工厂bean的某个标志创建一个或另一个连接工厂。