我有两个Spring配置文件: dev
和test
。我想在服务器环境中设置活动配置文件,而不是在我的代码中设置它,以便无论我在哪里部署应用程序,都可以根据服务器上的配置文件加载配置文件。该怎么做?
我有两个Spring配置文件: dev
和test
。我想在服务器环境中设置活动配置文件,而不是在我的代码中设置它,以便无论我在哪里部署应用程序,都可以根据服务器上的配置文件加载配置文件。该怎么做?
-Dspring.profiles.active=test
编辑: 要将此添加到Eclipse中的Tomcat,请选择Run -> Run Configurations
并选择您的Tomcat运行配置。 点击Arguments
选项卡,在VM arguments
的末尾添加-Dspring.profiles.active=test
。 另一种方法是将属性添加到Servers
项目中的catalina.properties中,但如果在那里添加它,则省略-D
。
编辑: 对于Spring Boot,您有另一个选择。 如果您在属性前面加上两个破折号,可以将属性作为程序参数传递。
以下是使用Spring Boot可执行jar文件的两个示例...
系统属性
$ java -jar -Dspring.profiles.active=test myproject.jar
程序参数
$ java -jar myproject.jar --spring.profiles.active=test
至少有两种方法可以实现:
在web.xml中定义context参数——这会破坏“一个包适用于所有环境”的说法。我不推荐这样做。
定义系统属性-Dspring.profiles.active=your-active-profile
我认为定义系统属性是更好的方法。那么如何为Tomcat定义系统属性呢?在互联网上,我可以找到很多建议,比如“修改catalina.sh”,因为你找不到任何配置文件来完成这样的事情。修改catalina.sh是一种肮脏且不可维护的解决方案。有一种更好的方法。
只需要在Tomcat的bin目录下创建setenv.sh文件,并添加以下内容:
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=dev"
而且它将在运行catalina.sh start或run期间自动加载。
这里有一篇博客描述了上述解决方案。
对于Eclipse,设置-Dspring.profiles.active
变量在VM arguments中应该就可以解决问题了。
前往
右键点击项目-->运行为-->运行配置-->参数
并将-Dspring.profiles.active=dev
添加到VM arguments中。
<tomcat-home>\conf\catalina.properties
文件中添加以下新行:spring.profiles.active=dev
名称:spring_profiles_active
值:dev
(或者您的任何值)
Linux:
在PATH下添加以下行到/etc/environment中:
spring_profiles_active=prod
(或者其他配置文件)export spring_profiles_active=prod
,这样你就可以在运行时使用它了。对于Tomcat 8:
Linux :
创建setenv.sh文件,并更新以下内容:
export SPRING_PROFILES_ACTIVE=dev
Windows:
创建setenv.bat文件,并更新以下内容:
set SPRING_PROFILES_ACTIVE=dev