springboot2.0入门(八)-- profile启动文件配置

一、不同环境使用不同配置文件

  将application.yml文件拷贝三份,在文件末尾分别对应开发/生产/测试,dev/prod/test/文件夹,其中application.yml 中默认激活开发环境

 

修改不同配置文件的启动端口,在application.yml文件中添加具体启动的配置文件,可以看到不同的启动端口,使用maven的打包命令,将项目打入jar包:

 

如果打包出错,在xml中配置跳过test测试,进入到jar包目录,使用java -jar  启动项目

<!-- 跳打包test文件报错-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
               <testFailureIgnore>true</testFailureIgnore>
             </configuration>
            </plugin>

 

默认以开发环境8810端口启动,可以在启动时指定配置文件:

 改用生产环境的配置文件:

java -jar helloworld-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

可以发现项目以8888端口启动

二、在idea中配置启动文件:

VM options设置启动参数 -Dspring.profiles.active=prod

Program arguments设置 --spring.profiles.active=prod

Active Profile 设置 prod

需要注意的是,上面三种方式,选一种即可:

 

2、配置文件的优先级:

外部大于内部,特指大于泛指

 下面带有dev\prod\test特指的文件优先级更高

 

 三、文件优先级说明

 spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

–file:./config/
–file:./
–classpath:/config/
–classpath:/

 

 

 

 

以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。

SpringBoot会从这四个位置全部加载主配置文件,如果高优先级中配置文件属性与低优先级配置文件不冲突的属性,则会共同存在—互补配置。

我们也可以通过配置spring.config.location来改变默认配置

java -jar Xxx-version.jar  --spring.config.location=D:/application.properties

 

配置加载顺序

SpringBoot也可以从以下位置加载配置:优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。

  1. 命令行参数
  2. 来自java:comp/env的JNDI属性
  3. Java系统属性(System.getProperties())
  4. 操作系统环境变量
  5. RandomValuePropertySource配置的random.*属性值
  6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  8. jar包外部的application.properties或application.yml(不带spring.profile)配置文件
  9. jar包内部的application.properties或application.yml(不带spring.profile)配置文件
  10. @Configuration注解类上的@PropertySource
  11. 通过SpringApplication.setDefaultProperties指定的默认属性

 

posted @ 2019-11-09 11:50  李维维(levi)  阅读(1766)  评论(0编辑  收藏  举报