1. 多环境部署

image.png

2. profile提供多环境支持

image.png在 application.yml 中增加 dev 的激活,也就是说:默认是 dev 环境、

  1. spring:
  2. profiles:
  3. active: prod

application-prod.yml

  1. server:
  2. port: 80
  3. spring:
  4. datasource:
  5. url: jdbc:mysql://192.168.56.108:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
  6. username: root
  7. password: root

application.yml:保留全部的配置,只有开放环境需要配置的除外

image.png
比如:myabtis 的日志打印,只有开放环境下需要配置,如果默认配置中也配置上了,那么在 prod 里面就无法取消了,因为如果是空值,应该会报错

  1. mybatis:
  2. type-aliases-package: cn.mrcode.foodiedev.pojo # 实体层
  3. mapper-locations: classpath:mapper/*.xml # mapper 层
  4. configuration:
  5. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl


那么这种情况下如何做呢?默认配置只保留如下配置即可,剩余在在 dev 中开启,而 prod 中不需要,则不配置即可

application-dev.yml

  1. server:
  2. port: 80
  3. spring:
  4. datasource:
  5. url: jdbc:mysql://192.168.56.108:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
  6. username: root
  7. password: root
  8. mybatis:
  9. type-aliases-package: cn.mrcode.foodiedev.pojo # 实体层
  10. mapper-locations: classpath:mapper/*.xml # mapper 层

好处:

  1. 当你的配置很多的时候,各种环境能比较清晰的知道哪些配置是更改了的
  2. 当新增或则减少配置时,能话最小的代价去维护
    比如:公共配置中的配置,在 dev 和 prod 中都没有覆盖,那么只需要维护公共配置文件中的内容即可,而不需要维护所有环节的配置文件内容

3. profiles 需要更改的地方梳理

由于当前阶段项目中某些配置写得不够好,还需要手动硬编码,这里做一个梳理

  1. 在 prod 配置文件中修改的有:
    1. 数据源配置
    2. mybatis 日志打印
  2. 项目中直接需要硬编码改变的配置有
    1. cn.mrcode.foodiedev.resource.FileUpload 图片加载的配置文件,图片存储目录和图片服务器路径
    2. BaseController 中硬编码的支付中心地址、回调地址信息