sprintboot 中占位符及多环境配置

时间:2023-03-09 00:55:45
sprintboot 中占位符及多环境配置

(原)

关于springboot中多环境配置问题

1、在application.properties文件中通过

spring.profiles.active=...

选择系统所要加载的配置文件,这里的...会在application-{...}.properties文件中查找。

如:

sprintboot 中占位符及多环境配置

有这些文件,如果application.properties文件中

spring.profiles.active=aaa

那么系统加载文件时,只会读取application.properties和application-aaa.properties中的内容,不会读取application-bbb.properties中的内容。

参考:

sprintboot 中占位符及多环境配置

通过${}可以读取到属性文件中之前的引用值。java程序可以获取app.name可以得到MyApp,获取app.description可以得到 MyApp is a Spring Boot application。

参考文档

2、在application.properties文件中通过@..@读取maven属性

如application.properties中:

java.version = @java.version@

在pom.xml中有

sprintboot 中占位符及多环境配置

当通过maven的package打完包以后,会发现,application.properties文件中已经变成:

sprintboot 中占位符及多环境配置

那么这里的${}和@@这种分割符是怎么定义的?

在springboot通过IDE自动生成的pom文件中,会有一个parent

sprintboot 中占位符及多环境配置

进入到spring-boot-starter-parent的pom文件中,会看到

sprintboot 中占位符及多环境配置

参考:

sprintboot 中占位符及多环境配置

最后一点:默认的配置文件接收spring风格的${}占位符,过滤maven中的占位符改为了@..@,并且能通过maven属性文件中的resource.delimiter去修改这个占位符。

参考文档

sprintboot 中占位符及多环境配置

sprintboot 中占位符及多环境配置

参考文档

如果你的springboot的pom文件中的<parent></parent>中没有spring-boot-starter-parent,那么你需要添加如上如官网中给出的resource 和 plugin。

3、springboot中的多环境配置

maven中添加如下:

sprintboot 中占位符及多环境配置

profiles中有二个profile标签,意味着有二种配置可选,如上图可看到通过activeByDefault可以默认激活id为bbb的配置,那么此时id为bbb的profile标签中的properties中的所有属性都是生效的,此时可以通过在application.properties中配置

spring.profiles.active=@profiles.active@

当通过maven打包时,mvn package -Paaa打包命令,可以将id为aaa的profile中的属性激活,此时spring.profiles.active的值就会变成aaa,application-aaa.properties属性文件就能被读取,如果通过mvn package命令正常的打包,因为默认id为bbb的属性是被激活的,spring.profiles.active的值就会变成bbb,那么application-bbb.properties文件就能被读取。