当Spring Boot启动时,可以根据不同的环境切换application.properties文件
我想做的事情 (wǒ zuò de
一般来说,Spring Boot的application.properties配置大致如下。
使用这个组合,在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的设置。
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已被激活。
在使用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中。
以上。
以上就是。