1、springboot动态指定对应环境的yml文件
1.1 SpringBoot在启动加载配置文件时,如没有明确指定spring.profiles.active属性,默认是加载application.yml或application.properties文件。
还可以使用以下命名约定来定义特定于配置文件的属性:
application-sit.yml或application-sit.properties;application-xxx.yml或application-xxx.properties等等
2、spring.profiles.active简介
含义:显式激活指定的配置文件。
我们可以通过spring.profiles.active属性来加载我们指定的 yml文件,从而实现不同的环境加载不同配置yml文件
用springcloud+springboot框架 有两种解决方案
第一种:
通过bootstrap.yml文件指定对应环境的配置文件
衍生问题
1、每次上线都要将对应环境的spring.profiles.active改回来,如果有一次改动不回来会导致上线的环境不是生产环境,还需要重新改动bootstrap.yml 中spring.profiles.active 值
解决方案:参考第二种
第二种:通过java -jar 命令指定对应的配置文件;同样可以达到spring.profiles.active的效果
java -jar xxxxxx.jar --spring.profiles.active=sit
衍生问题
1、一般我们开发环境使用工具idea、Eclipse启动的时候需要配置指定的配置文件才能启动。 可不可以本地开发环境启动的环境加载默认的或者指定的配置文件
尝试解决中。。。。。。
可不可以第一种和第二种方案中和一下是不是就解决了
这样配置本地调式是没有问题,但是当放到liunx服务器中用命令指定配置文件启动发现他还是默认使用bootstrap.yml配置
将bootstrap.yml改为application.yml可以了解决了
补充知识:SpringBoot不读取bootstrap.yml/properties文件
bootstrap.yml配置是SpringCloud项目才会用到的。
如果你的项目仅仅是一个SpringBoot项目,只会识别application.yml配置文件。
由于SpringCloud是基于SpringBoot构建的,所有SpringCloud项目两种文件都会识别,这个时候才有优先级的说法,SpringCloud项目是会优先读取bootstrap配置在读取application配置。
SpringBoot 项目中如果没有依赖 spring-cloud-context 的话,是不会读取bootstrap.properties 文件
bootstrap.yml配置是SpringCloud项目才会用到的。
如果你的项目仅仅是一个SpringBoot项目,只会识别application.yml配置文件。
如果SpringBoot项目想用到bootstrap.yml配置 加入依赖spring-cloud-context 就可以了
转载请注明:springcloud+springboot框架 动态加载配置文件 bootstrap.yml/properties文件 | 胖虎的工具箱-编程导航