我有两个Spring个人资料:dev
和test
。我想在服务器环境中设置活动配置文件,我不想在我的代码中设置它,这样无论我在何处部署应用程序,都会根据服务器中的配置文件加载配置文件。
我怎么能这样做?
答案 0 :(得分:94)
您只需在服务器上设置系统属性,如下所示......
-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文件的两个示例...
系统属性
[user@host ~]$ java -jar -Dspring.profiles.active=test myproject.jar
程序参数
[user@host ~]$ java -jar myproject.jar --spring.profiles.active=test
答案 1 :(得分:24)
至少有两种方法可以做到这一点:
在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启动或运行期间自动加载。
Here is a blog描述了上述解决方案。评论部分很有意思,因为它讨论了更多细节。
答案 2 :(得分:3)
作为系统环境变量:
<强>窗:强>
开始 - &gt;输入&#34; envi&#34;选择环境变量并添加一个新的:
Name: spring_profiles_active
Value: dev
(或其他任何东西)
<强> Linux的:强> 在PATH下的/ etc / environment中添加以下行:
spring_profiles_active=prod
(或任何个人资料)
然后也是export spring_profiles_active=prod
所以你现在在运行时就有它。
答案 3 :(得分:3)
对于Tomcat 8:
Linux:
创建setenv.sh并使用以下内容进行更新:
导出SPRING_PROFILES_ACTIVE = dev
Windows:
创建setenv.bat并使用以下内容进行更新:
设置SPRING_PROFILES_ACTIVE = dev
答案 4 :(得分:2)
对于Eclipse,在VM参数中设置HttpClient
变量可以解决问题。
转到
右键单击项目->运行方式->运行配置->参数
并将您的-Dspring.profiles.active
添加到 VM参数
答案 5 :(得分:0)
在<tomcat-home>\conf\catalina.properties
文件中,添加以下新行:
spring.profiles.active=dev