我有两个Spring配置文件:dev
和test
。我想在服务器环境中设置活动配置文件,我不想在代码中设置它,这样无论我在哪里部署应用程序,配置文件都会根据服务器中的配置文件加载。我该怎么做呢?
您可以简单地在服务器上设置系统属性,如下所示…
-Dspring.profiles.active=test
Edit:要将其添加到eclipse中的tomcat中,选择Run -> Run Configurations
并选择tomcat运行配置。单击Arguments
选项卡,在VM arguments
的末尾添加-Dspring.profiles.active=test
。另一种方法是将财产添加到你的卡特琳娜。在Servers
项目中添加属性,但如果您在那里添加它,则省略-D
.
Edit:对于与Spring Boot一起使用,您还有一个额外的选择。如果在属性前加上两个破折号,则可以将该属性作为程序参数传递。
下面是两个使用Spring Boot可执行jar文件的例子…
系统属性
$ java -jar -Dspring.profiles.active=test myproject.jar
项目论证
$ java -jar myproject.jar --spring.profiles.active=test
至少有两种方法:
-
在web.xml中定义上下文参数-打破了"一个包适用于所有环境";声明。我不推荐
-
定义系统属性
-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,在VM参数中设置 -Dspring.profiles.active
变量应该可以达到目的。
右键单击项目->运行——>运行配置——>参数
并添加你的 -Dspring.profiles.active=dev
的 VM参数
作为系统环境变量:
Windows:开始->键入"envi"选择环境变量并添加一个新的:
Name: spring_profiles_active
Value: dev
(或任何你的)
在/etc/environment的PATH下添加以下行:
spring_profiles_active=prod
(或其他配置文件)
然后是export spring_profiles_active=prod
所以你现在有它在运行时
在<tomcat-home>confcatalina.properties
文件中,添加以下新行:
spring.profiles.active=dev
对于Tomcat 8:
Linux:创建setenv.sh并更新如下:
出口SPRING_PROFILES_ACTIVE = dev Windows:创建setenv.bat并更新如下:
设置SPRING_PROFILES_ACTIVE = dev