设置Spring Profilevariables
我有两个Springconfiguration文件:“dev”和“test”。 我想在服务器环境中设置活动configuration文件,我不想将其设置在我的代码中,以便在我部署应用程序的任何地方,configuration文件都将根据服务器中的configuration文件加载。 我怎样才能做到这一点?
您可以简单地在服务器上设置系统属性,如下所示…
-Dspring.profiles.active=test
编辑:要添加到Eclipse中的tomcat,selectRun -> Run Configurations
并select您的Tomcat运行configuration。 单击“ Arguments
选项卡,并在VM arguments
的末尾添加-Dspring.profiles.active = test。 另一种方法是将属性添加到您的Servers
项目中的catalina.properties,但是如果添加它,那么省略-D
编辑:用于Spring Boot ,你有一个额外的select。 如果用两个破折号前置该属性,则可以将该属性作为程序parameter passing。
这里有两个使用Spring Boot可执行jar文件的例子
系统属性
[user@host ~]$ java -jar -Dspring.profiles.active=test myproject.jar
程序参数
[user@host ~]$ java -jar myproject.jar --spring.profiles.active=test
至less有两种方法可以做到这一点:
-
在web.xml中定义上下文参数 – 打破“所有环境的一个包”语句。 我不build议这样做
-
定义系统属性
-Dspring.profiles.active=your-active-profile
我相信定义系统属性是一个更好的方法。 那么如何定义Tomcat的系统属性呢? 在互联网上,我可以find很多的build议,如“修改catalina.sh”,因为你不会find任何configuration文件做这样的东西。 修改catalina.sh是一个肮脏的不可维护的解决scheme。 有一个更好的方法来做到这一点。
只需在Tomcat的bin目录下创build文件setenv.sh,内容如下:
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=dev"
并在运行catalina.sh启动或运行时自动加载。
这是一个描述上述解决scheme的博客 。 评论部分是有趣的,因为它谈到更多的细节。
作为系统环境variables:
Windows:开始 – >input“envi”select环境variables,并添加一个新的: Name: spring_profiles_active Value: dev
(或任何你的是)
Linux:在PATH下添加以下行到/ etc / environment:
spring_profiles_active=prod
(或任何configuration文件是)
那么也可以export spring_profiles_active=prod
这样你就可以在运行环境中使用了。