当Spring Boot启动时,可以根据不同的环境切换application.properties文件

我想做的事情 (wǒ zuò de

一般来说,Spring Boot的application.properties配置大致如下。

無題.png

使用这个组合,在Spring Boot启动时根据环境切换application.properties。需要注意的是,因为有多种配置方法,在这里我们将介绍四种。

1. 设置配置文件为启动参数。

设置启动参数的方法有以下两种。

1. 命令行参数
java -jar spring-boot-application-properties-sample-1.0.0.jar --spring.profiles.active=dev1
2. Java系统属性(System.getProperties())
java -jar -Dspring.profiles.active=dev1 spring-boot-application-properties-sample-1.0.0.jar

然而,根据https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html的说明,命令行参数具有更高的优先级。因此,如果在启动时设置了两者,则会以以下方式启动。

$ java -jar -Dspring.profiles.active=dev1 spring-boot-application-properties-sample.jar --spring.profiles.active=dev2

Java系统属性(System.getProperties())是-Dspring.profiles.active=dev1,
而不是
命令行参数(Command line arguments)是–spring.profiles.active=dev2。

需要注意的是被采用(覆盖)的点。
※需要注意的是Java系统属性(System.getProperties())中的-Dspring.profiles.active优先级较低,会被许多变量覆盖。

2. 在操作系统的环境变量中设置配置文件。

在Spring Boot启动时,会加载环境变量”SPRING_PROFILES_ACTIVE”并将其作为配置文件。因此,如果事先在操作系统的环境变量中定义了”SPRING_PROFILES_ACTIVE”,那么就会采用该定义的配置文件。

Windows的设置。

1.png

Linux的设置。

export SPRING_PROFILES_ACTIVE=dev1

设定如上,当Spring Boot启动时,会加载名为dev1的配置文件,即“application-dev1.properties”。下面是控制台上的输出信息。最底部会显示“当前激活的配置文件: dev1”,说明dev1配置文件已经激活。

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.3.0.RELEASE)

2017-08-20 20:27:41.807  INFO 7080 --- [           main] com.example.App                          : Starting App on N-PC with PID 7080 (C:\Development\sts-bundle\workspace\spring-boot-application-properties-sample\target\classes started by N in C:\Development\sts-bundle\workspace\spring-boot-application-properties-sample)
2017-08-20 20:27:41.807  INFO 7080 --- [           main] com.example.App                          : The following profiles are active: dev1

3. 在AP服务器的JNDI中进行配置文件的设置。

将使用Spring Boot创建的应用程序打包为WAR文件,并在另一个应用服务器上部署并运行时,可以使用应用服务器的JNDI来设置配置文件。以下是使用Tomcat的配置示例。

在Tomcat的context.xml文件中进行定义
<?xml version="1.0" encoding="utf-8"?>
<Context>
    <Environment
            type="java.lang.String"
            name="spring.profiles.active"
            value="dev2"/>
</Context>

如上所述,当Tomcat启动时,加载名为dev2的配置文件,并采用”application-dev2.properties”。以下是此时控制台的输出结果。在最底部会显示”当前活跃的配置文件为:dev2″,说明dev2已被激活。

2.png

在使用Spring Boot创建WAR文件并部署到另一个Tomcat服务器的方法,请参考Spring Boot创建WAR文件并部署到另一个Tomcat服务器。

4. 在AP服务器的startup.bat(sh)文件中设置为环境变量的配置文件。

如果是Tomcat的话,可以在startup.bat(sh)或者catalina.bat(sh)等文件中,

set "SPRING_PROFILES_ACTIVE=dev2"
export SPRING_PROFILES_ACTIVE=dev2

可以通过环境变量”SPRING_PROFILES_ACTIVE”来指定配置文件的选项。在这种情况下,需要在context.xml中进行相应设置。

<?xml version="1.0" encoding="utf-8"?>
<Context>
    <Environment
            type="java.lang.String"
            name="spring.profiles.active"
            value="dev3"/>
</Context>

如果已定义,则优先使用相应的配置文件(在context.xml中定义的dev3)。

请参考

在构建时为每个环境切换应用程序属性文件(application.properties)并将其包含在Spring Boot的WAR中。

以上。

以上就是。

广告
将在 10 秒后关闭
bannerAds