SpringBoot多配置文件

四.Profile
1.多配置文件
新建application.properties
配置:
server.port=8079
新建application-dev.properties
server.port=8082
新建application-prod.properties
server.port=8083
注释掉yml里的端口号部分,启动发现走的application.properties的8079
在application.properties里加上,加上后启动,此时走的是application-dev.properties里配置的端口号8082
spring.profiles.active=dev
2.yml支持多文档快的方式
创建application-dev.properties
server.port=8082
创建application-prod.properties
server.port=8083
application.properties里
server.port=8079 spring.profiles.active=dev
yml里

端口号如何切换:
1.用dev的:application.properties里设置成spring.profiles.active=dev,yml里设置成spring:
profiles:
active: dev
启动后端口号走dev的8082
2.用prod的,方法同上
3.用application.properties里的8079:需要同时满足以下条件:
1)VM options 里 没有
-Dserver.port=xxxx
2)application.yml 里 没有
server:
port: 8085
只要以上两条同时满足,
Spring 才会退而求其次,使用:
application.properties → 8079
4.使用yml里的端口号:
1)没有 JVM 参数覆盖
-Dserver.port=xxxx
2)没有启动参数覆盖
--server.port=xxxx
3)当前激活的 profile 没有匹配到其它端口配置块
(比如 dev / prod 文档块)
在你现在这份 yml 里:

  • active = dev → 8082(覆盖 8085)
  • active = prod → 8083(覆盖 8085)
  • active 未设置 / 乱写 / 不匹配并且application.properties里的端口号8079被注释→走 8085
    所以:
    8085 的真实角色是:
    默认端口(fallback)
    问题:我把active的值删掉了,但是application.properties的8079还留着,vm也没有配置,按理说应该走yml的默认8085,但是走的8079,我把8079注释后走的8085,这是为啥
    解答:当 application.yml 和 application.properties 同时存在时:
  • 如果 yml 中 server.port 没有被 Spring 认为是"生效配置"
  • Spring 就会回退去用 properties 里的 8079
  • 一旦你把 8079 注释掉,yml 才"顶上来",用 8085
    你这个情况说明一件事:
    yml 顶部那一段,并没有被当作"有效的默认配置块"加载
    这不是你的问题,是 Spring Boot 2.4+ 的加载规则, 是 Config Data 机制的设计结果
    3.激活指定profile
    tomcat配置里加:-Dspring.profiles.active=dev
    端口号强制走dev
    四.配置文件加载顺序
    这里新配置了几个application.properties

    --file:./config/ 对应图片中的第一个application.properties
    --file:./ 对应图片中的最后一个application.properties
    --classpath:/config/ 对应图片中的第二个application.properties
    --classpath:/ 对应图片中的第三个application.properties
    这四个可以重叠,是互补的,但是有优先级,优先级按上面文本写的顺序从高到低
    还有一种方式,我不走项目内的application.properties,我在磁盘里创建一个application.properties,用下面的命令java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=D:/appliction.properties
相关推荐
小蒜学长7 小时前
在线保险服务与管理平台的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·服务平台·在线保险
ym hyd 1118 小时前
门诊挂号系统源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·毕设
萧瑟余晖9 小时前
Spring Boot 自动配置原理详解
spring boot
知守观9 小时前
Spring Boot 2.1 → 3.5 迁移推演:这个 2018 年的项目会炸在哪
java·spring boot
LiuYanG10 小时前
MQTT 客户端反复重连怎么办?Spring Boot 接 EMQX 断线重连踩坑实录
spring boot·物联网
Q264336502310 小时前
【有源码】基于SpringBoot+Vue的博物馆展览与服务一体化平台-java博物馆数字化展品展示与交互平台设计
java·vue.js·spring boot·spring·毕业设计·javaweb·课程设计
专业程序开发源11 小时前
springboot全民健身和饮食健康管理系统29158-计算机课程设计、毕业设计
java·spring boot·后端·python·django·php·课程设计
ym hyd 11111 小时前
汽车零部件缺陷管理系统源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·汽车·毕设
paopaokaka_luck12 小时前
高校社团管理(AI辅助任务分配、协同过滤算法推荐、ECharts数据可视化、活动参与闭环、校园交流与反馈、器材借还管理)
java·前端·javascript·spring boot·数据分析·echarts
vx_Biye_Design12 小时前
springboot小区管理系统68491-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express