我有一个包含一些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延伸出来的一个类。我不知道知道与否是否重要。