Java 如何从Maven属性获取Spring中@PropertySource的文件位置
我在参考资料文件夹中存储了两个属性文件:qa.properties和dev.properties 我指定了Maven属性“environment”,这是应该加载的属性文件的名称Java 如何从Maven属性获取Spring中@PropertySource的文件位置,java,spring,maven,Java,Spring,Maven,我在参考资料文件夹中存储了两个属性文件:qa.properties和dev.properties 我指定了Maven属性“environment”,这是应该加载的属性文件的名称 <properties> <environment>qa</environment> </properties> 也许您可以为此使用特定于配置文件的属性,如application qa.properties,并使用spring.profiles.act
<properties>
<environment>qa</environment>
</properties>
也许您可以为此使用特定于配置文件的属性,如
application qa.properties
,并使用spring.profiles.active=qa
在application.properties中激活它。这里有更多的不要在构建时使用Maven
属性来执行此操作。这种方法迫使您为每个环境构建一个工件,这不是一个好的实践
更好的方法是只构建一个工件和/或应用程序以部署在任何环境中(qa、阶段、负载测试、产品等)
一种方法是将属性文件命名为application test.properties
,application-xxxxx.properties
,并以以下方式运行应用程序:
java-Dspring.profiles.active=qa myapp.jar
如果遵循此方法,则不需要前面描述的Config
类
这应该让你开始。请注意,您必须包含不同环境的属性文件,但这也可以解决。查看。为此,必须将环境属性指定为系统属性。Maven Surefire插件可以帮助您:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<systemPropertyVariables>
<environment>QA</environment>
</systemPropertyVariables>
</configuration>
</plugin>
org.apache.maven.plugins
maven surefire插件
${surefire.version}
质量保证
你没有。Maven属性是在构建时生成的。Spring是运行时的。您需要让您的构建在一个公共名称上部署一个不同的文件以供Spring查看。您应该了解Spring提供的功能,这将允许您根据活动概要文件有条件地实例化bean。目前,我使用Spring概要文件特定的属性实现了逻辑。当我使用以下命令指定概要文件时,它可以正常工作:-Dspring.profiles.active=qa。但当未指定配置文件时,将使用默认配置文件。如何将默认配置文件指定为每次不写入-Dspring.profiles.active=qa?您可以将spring.profiles.active=qa
添加到bootstrap.properties
中,我将spring.profiles.active=@environment@添加到application.properties中,现在我的应用程序使用Maven“environment”属性中指定的配置文件运行来自Maven的默认环境,从Maven传递值是有争议的。但是,如果您想在另一个环境中运行同一个应用程序,您可以使用-Dspring.profiles.active=stage,而无需再次编译和生成另一个二进制文件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<systemPropertyVariables>
<environment>QA</environment>
</systemPropertyVariables>
</configuration>
</plugin>