- 需求:在本地开发和生产环境之间修改设置快要逼疯我了,今天一定要搞定他!!!
开发者在项目发布之前,一般需要频繁的在开发环境,测试环境以及生产环境之间进行切换,这个时候需要频繁更改,例如,数据库配置,consul配置,admin配置,rabbitmq配置等。频繁修改带来了巨大的工作量,SPring对此提供了解决方案(@Profile注解),Spring
Boot则更进一步提供了更加简洁的解决方案,Spring Boot中约定的不同环境文件名称规则为
application-{profile}.ymlprofile占位符表示当前环境的名称,具体配置步骤如下。以团队微服务架构中的监控admin为例。
- 创建配置文件
首先在resources目录下创建两个配置文件:application-dev.yml和application-prod.yml,分别表示开发环境中的配置和生产环境中的配置。
application-dev.yml配置如下:
server:
port: 8220
spring:
application:
name: micro-admin
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
health-check-url: http://localhost:8220/actuator/health
hostname: localhost
application-prod.yml配置如下:
server:
port: 8220
spring:
application:
name: micro-admin
cloud:
consul:
host: 172.17.0.1
port: 8500
discovery:
service-name: ${spring.application.name}
health-check-url: http://172.17.0.1:8220/actuator/health
hostname: 172.17.0.1
- 配置application.yml
然后在application.yml中进行配置
spring:
profiles:
active: dev
这个表示使用appication-dev.yml配置文件启动项目,若将dev改成prod,则表示使用application-prod.yml启动项目。项目启动成功之后,就可以用相应的端口进行访问了。
- 在代码中配置
对于第二步在application.yml中添加的配置,我们也可以在代码中添加配置来完成,在启动类的main方法上添加如下代码,可以替换第二步的配置:
- 项目启动时的配置
对于第二步,第三步提到的两种配置方式,也可以将项目打成jar包后启动时,在命令行动态指定当前环境,实例命令如下:
- 项目启动时的配置
jar -jar micro-admin.jar --spring.profiles.active=prod
这个对于dokcer形成镜像时想想还真有用!!!!