在不同的Spring上下文中加载属性

时间:2015-06-16 19:15:14

标签: java spring properties

我有两个Web应用程序:app-web1app-web2app-web2app-web1的模块。 app-web2中的app-web1需要一些配置,例如application.properties。 我使用spring PropertySourcesPlaceholderConfigurer来加载属性,但这只适用于app-web1的上下文。 app-web2' s application-context.xml具有来自两个Web项目通用的其他项目的导入资源。

以下是application-context-root.xml中我的bean,由其他人应用程序上下文导入:

<bean id="properties" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
  <property name="location" value="classpath*:config/application.properties"/>
  <property name="placeholderPrefix" value="$spring{" />
  <property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>

我的application.properties文件位于web-app1,我想在app-web2上下文中加载此属性。

我怎么能这样做?

我正在使用:

  • JBoss AS 7.1.1;
  • Java EE 7;
  • Spring 3.2.12;

提前致谢!

2 个答案:

答案 0 :(得分:1)

此处讨论的相关主题。 SharedApplicationContext

This

答案 1 :(得分:0)

您可以使用maven-resources-plugin中的资源副本。 有关详细信息,请参阅:http://maven.apache.org/plugins/maven-resources-plugin/copy-resources-mojo.html

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
              <resources>          
                <resource>
                  <directory>src/non-packaged-resources</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>