springboot的多环节配置
我们在开发应用的时候,通常同一套程序会被应用和安装到几个不同的环境中,比如开发、测试、生产等。
其中每个环境的数据库地址、服务器端口等配置都不同。如果在为不同环境打包时都要频繁的修改配置文件,那必将是个非常繁琐的且容易出错的事情。
对于多环境的配置,各种项目构建工具或是架构的基本思路是一样的,通过配置多份不同的环境配置文件,在通过打包命令指定需要打包的内容之后
进行区分打包,spring boot也不列外。或者说实现起来更加简单。
在springboot中,多环境配置的文件名需要满足 application-{profile}.properties/yml的格式,其中{profile}对应环境表示,
如下所示:
application-dev.yml :开发环境
application-test.yml :测试环境
application-prod.yml :生产环境
至于具体哪个配置文件会被加载,需要在application.yml文件中通过spring.profile.active 属性来设置,其值对应配置文件中的{profile}值
如spring.profile.active = test就会加载application-test.yml配置文件内容。
以下,以不同环境配置不同的服务端口为例,进行实验:
创建springboot项目,在resource下面添加三个配置文件,application-dev.yml 、application-test.yml、application-prod.yml
三个文件的端口号和注册的eureka中的服务名称都不同
application-dev.yml server.port =7001 spring: application: name: springcloud-consumer-dev
application-test.yml server.port =7001 spring: application: name: springcloud-consumer-dev
application-prod.yml server.port =7001 spring: application: name: springcloud-consumer-dev
在application.yml中设置属性 spring: profiles: active: test 加载的是application-test.yml文件。
访问eureka-server可以看到端口号和应用名称为test文件中的配置 以开发环境为默认配置 application-dev.yml