Bootstrap

SpringBoot总结(八)——配置文件的加载位置

一、SpringBoot配置文件的加载位置。

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

  • file:./config/
  • file:./
  • classpath:/config/
  • classpath:/

注:以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置的内容。
可以通过配置spring.config.location来改变默认的配置。
下面新建一个项目进行演示:(默认的配置文件是第四种方式)
在这里插入图片描述
为上述的(1)(2)(3)(4)配置文件中分别配置端口号:

(1)server.port=8084
(2)server.port=8083
(3)server.port=8082
(4)server.port=8081

启动项目:由第一种方式的优先级最高.
在这里插入图片描述
注:SpringBoot会从这四个位置全部加载主配置文件,相同的配置优先级高的会覆盖优先级低的。
如果同一个目录下,既有application.yml又有application.properties,默认先读取application.properties。

配置参数互补示例:
在这里插入图片描述
其次我们编写一个Controller:

package com.example.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/sayHello")
    public String sayHello(){
        return "hello World";
    }
}

启动项目:
在这里插入图片描述
项目启动的端口还是使用的是最外层config目录下配置文件的端口8084;项目的访问路径发生变化。


通过配置spring.config.location来改变默认的配置。
示例:

--spring.config.location=d:/application.properties

通过命令指定配置文件的路径,并且指定路径下端口为8087。

java -jar springboot-05-0.0.1-SNAPSHOT.jar  --spring.config.location=E:/application.properties

把项目打成jar包:
项目打包
在这里插入图片描述

二、SpringBoot的外部配置加载顺序

Spring Boot支持多种外部配置方式:

  • 命令行参数
  • java -jar xxxxx.jar(项目包) --server.prot=8081
  • 可以通过类似的方式修改配置
  • 来自java:comp/env的NDI属性
  • Java系统属性(System.getProperties())
  • 操作系统环境变量
  • RandomValuePropertySource配置的random.*属性值
  • jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  • jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  • jar包外部的application.properties或application.yml(不带spring.profile)配置文件
  • jar包内部的application.properties或application.yml(不带spring.profile)配置文件
  • @Configuration注解类上的@PropertySource
  • 通过SpringApplication.setDefaultProperties指定的默认属性
;