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 就可以了

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐