在整个项目的项目周期中,会经历很多项目阶段,比如开发阶段、测试阶段、SIT阶段、UAT阶段以及交付生产,不同的阶段,项目在配置细节上都需要不同的配置信息,比如日志等级,开发阶段是DEBUG级别,交付生产后需要是INFO级别等。如果每次都手动切换这些配置,必然给开发人员带来不必要的重复工作,甚至有可能出错。而Spring Boot 在这方面很大的改善和优化,下面我们具体说说:
Spring 框架从Spring3.1 开始支持基于Profile的配置,这是一种条件化配置,基于运行时激活的Profile,会使用或者忽略不同的Bean或者配置类。
假如我们的项目有两个阶段:开发阶段(简称:DEV)和生产运行阶段(简称:PROD),在开发阶段,服务器的端口号为8080,生产阶段的端口号为9080,同时开发阶段不需要对做安全限定,采用默认的安全策略,如果是生产环境,则启用安全配置,基于这样的场景我们再Spring Boot 中应该怎样实现呢?
首先,我们在application.properties配置文件的基础上,增加两个配置文件application-dev.properties和application-prod.properties配置文件
在application.properties 文件中设置
spring.profiles.active=prod
用于配置启动时激活的Profile模式
在application-dev.properties中设置
server.port=8080
在 application-prod.properties设置
server.port=9080
由于我们激活的Profile为生产模式,即prod,所以启动后应用的服务端口为9080
查看启动日志:
激活的Profile
目前的端口号: