我在spring-config.xml
中声明了以下属性<util:properties id="ldap" location="classpath:com/company/project/resources/some_configuration.properties"/>
然后我使用服务实现中的spring @Value
注释将属性中包含的值注入到某些成员变量中(这种方法是我在服务实现中使用的最干净/最优雅的方法如果可能的话,我不想改变它)。
此布局的问题是我必须修改属性文件并为每个部署环境(质量,生产等)重新生成应用程序战争,并且服务器管理员希望通过JNDI配置some_configuration.properties
路径(应用程序服务器是JBoss)
如何通过<util:properties />
代码中的jndi传递文件位置?
任何帮助和建议都将不胜感激
修改 如果有人提出解决方案,我可以做类似的事情,那将是很好的。
<util:properties id="ldap" location="jndi:url/some_configuration.properties"/>
或类似的
答案 0 :(得分:4)
旧帖子,但这可能对其他人有用:
<jee:jndi-lookup id="ldapProps" jndi-name="your/jndi" resource-ref="true"/>
<util:properties id="ldap" location="file://#{ldapProps}/some_configuration.properties" />
答案 1 :(得分:1)
我看起来类似,这个答案将帮助您使用PropertyPlaceholderConfigurer:https://stackoverflow.com/a/3486315/439427。
HTH
在您的情况下,您需要在bean中配置PropertyPlaceholderConfigurer
,然后您只需要进行以下更改:
<util:properties id="ldap"
location="classpath:x/y/z/resources/${environment}.properties"/>
${environment}
将由以下环境变量设置:-Denvironment=dev