有没有办法通过jndi在<util:properties>标签中传递文件位置?</util:properties>

时间:2012-05-23 19:51:36

标签: java spring jndi

我在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"/>

或类似的

2 个答案:

答案 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