Java spring如何按环境加载配置文件?

Java spring如何按环境加载配置文件?,java,spring,maven,Java,Spring,Maven,我在我的应用程序中使用spring框架,我使用一些配置文件,但在不同的环境中,我需要使用不同的属性,如db config properties。现在我将不同的文件放在不同的路径中,然后使用mavenprofile方法打包不同的WAR 现在,我只想在所有环境中打包一个WAR,并希望通过传输不同的参数来使用不同的配置文件。此外,我不想将配置文件移出项目 您可以使用SpringBean配置文件或条件bean。您可以使用以下配置为每个环境定义propertyplaceholder bean

我在我的应用程序中使用spring框架,我使用一些配置文件,但在不同的环境中,我需要使用不同的属性,如
db config properties
。现在我将不同的文件放在不同的路径中,然后使用maven
profile
方法打包不同的WAR


现在,我只想在所有环境中打包一个WAR,并希望通过传输不同的参数来使用不同的配置文件。此外,我不想将配置文件移出项目

您可以使用SpringBean配置文件或条件bean。您可以使用以下配置为每个环境定义propertyplaceholder bean

        <beans profile="environment1">
<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="location">
        <value>database_env1.properties</value>
    </property>
</bean>
</beans>

<beans profile="environment2">
<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="location">
        <value>database_env2.properties</value>
    </property>
</bean>
</beans>

数据库_env1.properties
数据库_env2.properties

对于数据库配置,一种可能的方法是将JDBC数据源直接定义为应用程序服务器中的JNDI资源,然后使用它()-这样,WAR文件就不包含连接信息,而运行时环境会保存此信息

这种方法的一个优点是,连接信息可以由服务器管理员而不是应用程序开发人员管理


但不确定它是否满足您的“项目外无配置”要求。

您能说更多详细信息吗?我还有redis配置等。您想要的结果是什么?正在生成一个WAR,其中包含每个受支持环境的配置文件?为每个环境构建单独的WAR,每个环境只包含适当的配置?基于构建参数,使用单个环境配置构建单个WAR?