使用JBoss EAP 6.2的Spring 3.2 PropertySourcesPlaceholderConfigurer

时间:2014-04-07 14:10:24

标签: java spring jboss-eap-6

我希望Spring首先检查JBoss EAP 6.2(它使用JBoss AS 7.2)中的系统属性,然后检查jar中的属性。

我试过

<context:property-placeholder location="classpath:xxx.properties" />

但是这会使用jar中的属性而不是JBoss的系统属性。 我也试过

<context:property-placeholder location="classpath:xxx.properties" system-properties-mode="OVERRIDE" />

哪个应该使用旧的PropertyPlaceholderConfigurer,但这仍然使用jar中的属性。我也尝试设置3.0(而不是3.2)spring xsd,但无济于事。

那么我怎样才能让Spring先检查JBoss中的属性然后再检查jar?

编辑:我尝试用其他选项(ENVIRONMENT,NEVER和FALLBACK)替换OVERRIDE,但我总是以本地属性中定义的值结束。

2 个答案:

答案 0 :(得分:1)

在Artem Bilan的评论之后,我再次搜索(只是为了确保,没有重复)并找到一个加载相同属性的类,但在Java(Properties.load())中。这导致覆盖我试图通过Spring加载的system properties

答案 1 :(得分:1)

要向应用程序公开属性文件,我们已完成以下操作:

  • 在名为JBoss的目录结构中创建了一个com/ourcompany/configuration/main模块,并将其与所有其他JBoss模块一起放在模块目录中。

    < / LI>
  • 在该目录中创建了一个module.xml。

  • 将所有* .properties文件放在该目录中。

  • 在standalone.xml(JBoss配置文件)中创建以下内容,以使配置目录对我们的所有应用程序可见,并避免每个应用程序使用jboss-deployment-structure.xml文件。

然后所有属性都在类路径上,如预期的那样。

module.xml:

<module xmlns="urn:jboss:module:1.1" name="com.ourcompany.configuration">
    <resources>
        <resource-root path="."/>
    </resources>
</module>

standalone.xml:

<subsystem xmlns="urn:jboss:domain:ee:1.1">
    <global-modules>
        <module name="com.ourcompany.configuration" slot="main"/>
    </global-modules>
</subsystem>