做性的网站,建设工程合同约定的质量目标,大数据软件和网站开发那个就业好,360渠道推广系统文章目录 profile 的使用激活 profile 的方式命令行启动idea 中配置配置文件中激活 开发中最灵活的多环境配置创建四个配置主配置文件其他几个环境配置使用方式 配置文件拆分总结 在日常的开发中#xff0c;一般都会分好几种环境#xff0c;比如通常的 开发环境#xff1a;一… 文章目录 profile 的使用激活 profile 的方式命令行启动idea 中配置配置文件中激活 开发中最灵活的多环境配置创建四个配置主配置文件其他几个环境配置使用方式 配置文件拆分总结 在日常的开发中一般都会分好几种环境比如通常的 开发环境一般在开发的过程中一个比较随意地环境通常可以随意重启删除数据 ;测试环境面向测试同学的环境需要相对稳定完整基本模拟线上的环境但是可操作。生产环境也就是线上环境基本没有什么大的问题不会操作的环境是重中之重。
在三个环境都需要部署怎么样保证多个环境的配置正确开发方便部署方便这篇总结下
profile 的使用
profile 为在不同环境下使用不同的配置提供了支持我们可以通过激活、指定参数等方式快速切换环境。多 Profile 文件方式 Spring Boot 的配置文件共有两种形式.properties 文件和 .yml 文件不管哪种形式它们都能通过文件名的命名形式区分出不同的环境的配置
文件命名格式为application-{profile}.properties/yml
其中{profile} 一般为各个环境的名称或简称
例如 dev、test 和 prod 等等。当然也可以使用自定义的一些名字。
个人比较习惯yml的配置更方便阅读结构明确。
激活 profile 的方式
命令行启动
java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.activeprodidea 中配置
idea 中编辑启动参数添加 vm 选项-Dspring.profiles.activetest注这种方式和上面一样 配置文件中激活
创建 3 个配置文件,通过主配置文件激活环境不灵活
application.yml
application-dev.yml
application-test.ymlapplication.yml .主配置文件可以向下面这样写。
spring:profiles:active: dev开发中最灵活的多环境配置
创建四个配置
application.yml
application-dev.yml
application-test.yml
application-prod.yml主配置文件
application.yml #主配置文件
spring:profiles:active: ${ENV:dev}注意这里加了一个环境变量 ENV在启动的时候进行注入如果不写默认启动 dev 环境
其他几个环境配置
application-dev.yml #开发环境的配置
server:port: 8091application-test.yml #测试环境的配置
server:port: 8092application-prod.yml #生产环境的配置
server:port: ${PORT:8093}注这三个环境配置只在其中的 prod 环境使用了环境变量application-xxx.yml。 在后续使用prod的时候可以根据环境设置环境变量赋值配置。
相同的配置会覆盖 application.yml的配置
使用方式
1.在开发环境可以写死测试环境开发环境的配置避免在开发传环境变量激活什么的
2.在生产环境可以通过环境变量 ENVprod 激活生产环境的变量配置 idea 传递环境变量如下图
3.docker 环境启动时候通过 env 设置环境变量docker run -itd --env ENVprod test.jar
4.docker-compose 配置文件拆分
配置文件支持将将配置进行拆分到不同的配置文件 如果多个环境拥有相同的配置有两种解决办法 提取到application.yml 分离一个新的application-default_handler.yml
第一种情况可以针对 springboot 的一些通用配置
第二种适合一些业务的配置相关比如项目中有一些自定义的配置在三个环境都适合就可以分离开
spring:profiles:active: ${ENV:dev}include: default_handler只要 application-default_handler.yml 符合 yaml 的格式项目中一样可以加载到
总结
灵活使用环境变量启用不同的 profile灵活使用 spring.profiles.include 激活多个配置最后 application.properties 和 application.yml 是一样的使用方法如果你使用 nacos 也可以实现同样的效果但是需要引入中间件不推荐