1

我在 spring-config.xml 中声明了以下属性

<util:properties id="ldap" location="classpath:com/company/project/resources/some_configuration.properties"/>

然后我在服务实现中使用 spring 注释将属性中包含的值注入到一些成员变量@Value中(这种方法是迄今为止我在服务实现中使用的最干净/最优雅的方法,如果可能的话我不想更改)。

这种布局的问题是我必须修改属性文件并为每个部署环境(质量、生产等)重新生成应用程序战争,并且服务器管理员希望some_configuration.properties通过 JNDI 配置路径(应用程序服务器是 JBoss)

如何通过<util:properties />标签中的 jndi 传递文件位置?

任何帮助和建议将不胜感激

编辑: 如果有人提出一个我可以做类似事情的解决方案,那就太好了:

<util:properties id="ldap" location="jndi:url/some_configuration.properties"/>

或类似的

4

2 回答 2

4

旧帖子,但这可能对其他人有用:

<jee:jndi-lookup id="ldapProps" jndi-name="your/jndi" resource-ref="true"/>
<util:properties id="ldap" location="file://#{ldapProps}/some_configuration.properties" />
于 2013-07-30T00:42:34.983 回答
1

我正在寻找类似的东西,这个答案将帮助您使用 PropertyPlaceholderConfigurer:https ://stackoverflow.com/a/3486315/439427 。

高温高压


在您的情况下,您需要PropertyPlaceholderConfigurer在 bean 中配置,然后您只需要进行以下更改:

<util:properties id="ldap"
  location="classpath:x/y/z/resources/${environment}.properties"/>

where${environment}将由这样的环境变量设置:-Denvironment=dev

于 2012-05-23T20:37:16.510 回答