Spring - PropertyOverrideConfigurer ONE bean属性的多个配置行

时间:2013-11-21 17:34:20

标签: java spring

我有一个包含一些bean的spring xml文件,其中有两个我已粘贴在下面:

<bean 
     class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
      <property name="locations">
        <value>classpath:projectname-override.properties</value>
      </property>
</bean>

<bean id="myBeanName"
      class="my.company.department.svc.spring.WmSvcJndiDataSource">
  <property name="jndiName">
    <value>jdbc/XXXXX</value>
  </property>
  <property name="jndiTemplate">
    <ref bean="myJndiTemplate" />
  </property>
</bean>

第一个bean中引用的属性文件非常小(目前只有一行),如下所示:

myBeanName.jndiName=java:comp/env/jdbc/XXXXX_YYY_DEV3

我理解第一个bean中的PropertyOverrideConfigurer

  

将属性文件中的值推送到bean定义

因此 myBeanName bean中 jndiName 属性的值将从

开始

jdbc/XXXXX

java:comp/env/jdbc/XXXXX_YYY_DEV3

这是有效的,它部分地做了我们想要的。 我需要扩展功能,以便我可以处理多个部署环境。这当前替换了我们的一个开发环境(dev3)的bean属性。我想我需要spring来为大约25种不同的开发环境动态改变“myBeanName”。

例如,我想我希望我的属性文件看起来像这样

myBeanName.jndiName=java:comp/env/jdbc/XXXXX_YYY_DEV1
myBeanName.jndiName=java:comp/env/jdbc/XXXXX_YYY_DEV2
myBeanName.jndiName=java:comp/env/jdbc/XXXXX_YYY_DEV3
myBeanName.jndiName=java:comp/env/jdbc/XXXXX_YYY_DEV4
myBeanName.jndiName=java:comp/env/jdbc/XXXXX_YYY_DEV5
    ...
    ...
myBeanName.jndiName=java:comp/env/jdbc/XXXXX_YYY_DEV24
myBeanName.jndiName=java:comp/env/jdbc/XXXXX_YYY_DEV25

我不知道这是否是正确的做法。

有什么想法吗?

提前致谢。

注意

第二个bean中的

my.company.department.svc.spring.WmSvcJndiDataSource只是我们从org.springframework.jndi.JndiObjectFactoryBean,FYI延伸出来的一个类。我不知道知道与否是否重要。

0 个答案:

没有答案