设置Spring Profile变量

时间:2013-04-04 14:45:23

标签: spring spring-boot spring-profiles

我有两个Spring个人资料:devtest。我想在服务器环境中设置活动配置文件,我不想在我的代码中设置它,这样无论我在何处部署应用程序,都会根据服务器中的配置文件加载配置文件。  我怎么能这样做?

6 个答案:

答案 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)

至少有两种方法可以做到这一点:

  1. 在web.xml中定义上下文参数 - 打破了所有环境中的一个包"声明。我不推荐

  2. 定义系统属性-Dspring.profiles.active=your-active-profile

  3. 我认为定义系统属性是一种更好的方法。那么如何为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