背景:每个技术点都是有它出现的理由,而SpringBoot的Profile就是为了解决SpringBoot项目在不同环境下的不同配置的问题的。
原因:SpringBoot项目在开发、测试、生产环境下的配置是不同的,你总不能直接用在线项目的数据库来做测试开发吧?比如数据库的选择在不同的情况下项目需要连接不同的数据库。但是做过开发的都知道,项目经常需要切换到不同的环境下进行调试。
解决:SpringBoot给出了Profile来解决这个问题。
操作:
1.多Profile文件的方式
第一步:在resources包下面根据不同的环境创建多个配置文件,文件名可以是 application-{profifile}.properties/yml
如下
application.properties
application-dev.properties
application-prod.properties
注意:第一个是原本的全局配置文件,然后注意不止是properties配置文件,yml配置文件也是可以的。
第二步:在application.properties文件里面添加
spring.profiles.active=dev
结果:启动application-dev.properties这个配置
解析:为什么要添加这个配置呢?原因是虽然我们添加了application-dev.properties、application-prod.properties这两个配置文件但是SpringBoot默认启动的配置文件是application.properties。其他的配置文件比如属性值配置的,要不你用@PropertiesSource注解来引入。要不项目是不会去识别这些配置文件的,所以我们需要在默认的全局配置文件里面指定不同环境下的配置文件。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2、yml支持多文档块方式
server:
port: 8081
spring:
profiles:
active: dev
‐‐‐
server:
port: 8083
spring:
profiles: dev
‐‐‐
server:
port: 8084
spring:
profiles: prod
#指定属于哪个环境
结果:启动dev模块的配置
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3、其他的指定方式
除了在默认配置里面指定其他环境的还有其他的配置
一:命令行参数方式:cmd命令或者IDEA添加命令
打开cmd
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;
IDEA添加命令
二:虚拟机参数方式
-Dspring.profiles.active=dev