1. 多环境部署
2. profile提供多环境支持
在 application.yml 中增加 dev 的激活,也就是说:默认是 dev 环境、
spring:
profiles:
active: prod
application-prod.yml
server:
port: 80
spring:
datasource:
url: jdbc:mysql://192.168.56.108:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
username: root
password: root
application.yml:保留全部的配置,只有开放环境需要配置的除外
比如:myabtis 的日志打印,只有开放环境下需要配置,如果默认配置中也配置上了,那么在 prod 里面就无法取消了,因为如果是空值,应该会报错
mybatis:
type-aliases-package: cn.mrcode.foodiedev.pojo # 实体层
mapper-locations: classpath:mapper/*.xml # mapper 层
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
那么这种情况下如何做呢?默认配置只保留如下配置即可,剩余在在 dev 中开启,而 prod 中不需要,则不配置即可
application-dev.yml
server:
port: 80
spring:
datasource:
url: jdbc:mysql://192.168.56.108:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
username: root
password: root
mybatis:
type-aliases-package: cn.mrcode.foodiedev.pojo # 实体层
mapper-locations: classpath:mapper/*.xml # mapper 层
好处:
- 当你的配置很多的时候,各种环境能比较清晰的知道哪些配置是更改了的
- 当新增或则减少配置时,能话最小的代价去维护
比如:公共配置中的配置,在 dev 和 prod 中都没有覆盖,那么只需要维护公共配置文件中的内容即可,而不需要维护所有环节的配置文件内容
3. profiles 需要更改的地方梳理
由于当前阶段项目中某些配置写得不够好,还需要手动硬编码,这里做一个梳理
- 在 prod 配置文件中修改的有:
- 数据源配置
- mybatis 日志打印
- 项目中直接需要硬编码改变的配置有
cn.mrcode.foodiedev.resource.FileUpload
图片加载的配置文件,图片存储目录和图片服务器路径- BaseController 中硬编码的支付中心地址、回调地址信息