乐趣区

关于java:开发环境的配置提生产了这坑怎么填

授人以鱼不如授人以渔。大家好,我是 Java 课代表。明天跟大家分享一下 SpringBoot 基于 profile 的一些配置。
想要获取更多 Java 信息,请关注公众号:Java 课代表

0 痛点

开发过程中,咱们个别会有若干个不同的环境,如:开发环境,生产环境。个别状况下,不同环境下的程序配置是不同的。如果每次切换环境都去批改配置文件,一是比拟麻烦,二是容易出错。

例如:开发阶段,咱们能够采纳嵌入式的 H2 数据库,但生产环境中应用 mysql。

1 YAML 文件

SpringBoot 采纳 YAML(/ˈjæməl/)文件来治理配置,其长处是简洁明了,可读性好。

实现多配置有两种形式:

  1. 单个 yml 配置文件中编写不同配置
  2. 编写多个 yml 文件,代表不同的配置

单个 yml 文件

在一个 yml 文件中,通过 --- 分隔多个不同配置,依据spring.profiles.active 的值来决定启用哪个配置,例如:

# 公共配置
spring:
  profiles:
    active: pro #应用名为 pro 的配置,这里能够切换成 dev
  datasource:
    url: jdbc:mysql://localhost:3306/test_db?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
    password: 123456
    username: root
---
#开发环境配置
spring:
  profiles: dev #profiles 属性代表配置的名称

server:
  port: 8080
---
#生产环境配置
spring:
  profiles: pro

server:
  port: 80

多个 yml 文件

将配置编写在多个 yml 文件中,依据spring.profiles.active 的值来决定启用哪个配置。

配置文件规定如下:

  1. 文件命名须要合乎 application-{profile}.yml 的格局,如:application-dev.yml
  2. 雷同配置写到 application.yml 中,不同的环境配置写到不同的 yml 文件中

例如:

application.yml

# 公共配置
spring:
  profiles:
    active: pro #应用名为 pro 的配置,这里能够切换成 dev
  datasource:
    url: jdbc:mysql://localhost:3306/test_db?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
    password: 123456
    username: root

application-dev.yml

server:
  port: 8080

application-pro.yml

server:
  port: 80

2 抉择配置

有了 YAML 文件的配置,不同环境的不同配置终于不必改来改去了,但提交代码时还是要留神指定 spring.profiles.active 的值,否则还有提错配置的危险,有没有一劳永逸的方法呢?

咱们在启动利用时通过环境变量的形式指定应用哪个配置,具体如下:

java -jar xxx.jar --spring.profiles.active=pro

通过这样的配置,咱们就能够指定,在开发环境应用 dev 配置,在生产环境应用 pro 配置,从而一次解决提错配置文件的问题,而且还很优雅!

3 注意事项

  • 两种配置形式依据集体爱好应用,但如果配置很多,倡议拆成多个 yml 文件,即形式二。便于保护
  • 留神辨别二者的不同,不能混用

4 参考资料

  • Spring 实战(第五版)
  • Spring 官网文档

【举荐浏览】
RabbitMQ 教程
Freemarker 教程 (一)- 模板开发手册
下载的附件名总乱码?你该去读一下 RFC 文档了!
深入浅出 MySQL 优先队列(你肯定会踩到的 order by limit 问题)


码字不易,欢送点赞关注和分享。
搜寻:【Java 课代表】,关注公众号,每日一更,及时获取更多 Java 干货。

退出移动版