1

springboot配置文件

虽然springboot提供了一系列的默认配置,但是还是需要使用配置文件来进行一些自定义的配置

springboot中配置文件名称叫做application.properties或者application.yml

<!-- more -->

配置文件加载顺序

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

  • file:./config/ 当前项目根目录下的config目录下
  • file:./ 当前项目根目录下
  • classpath:/config/ 项目resources目录下的config目录下
  • classpath:/ 项目resources目录下

优先级由高到底,高优先级的配置会覆盖低优先级的配置,SpringBoot会从这四个位置全部加载主配置文件

也可以使用命令行启动项目时通过spring.config.location来改变默认的配置文件位置,多个路径使用逗号隔开,可以使用-spring.config.name来指定文件的名字

指定外部配置文件

可以使用@PropertySource来指定除默认配置文件之外的配置

@PropertySources(
        {
                @PropertySource(value = "classpath:test.properties")
        }
)
@Configuration
public class MainConfig4 {

}

自定义配置

对于自定义的配置,可以使用@ConfigurationProperties标注所属类来进行与配置文件映射,当然映射的前提是这个类要交由spring ioc容器进行管理,所以首先要将该类作为组件进行注册

@Component
@ConfigurationProperties(prefix = "custom")
public class CustomConfig {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

这样做虽然可以正常的获取配置,但是在进行配置的时候发现在进行配置的时候没有提示,凭什么人家的有提示,我的没有

加上这个依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

进行自定义类配置时也如德芙巧克力般丝滑了

这种方式默认是针对于默认的配置文件的,如果不想在默认配置文件中进行配置的话,还需要加上spring的@PropertySource注解来标明所对应的配置文件

bootstrap和application两种配置文件的区别

在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 application,application 配置文件主要用于 Spring Boot 项目的自动化配置;bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 application

  • bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性
  • bootstrap 里面的属性会优先于application加载,且默认不能被本地相同配置覆盖

bootstrap应用场景

  • 使用spring cloud config配置中心时,需要在bootstrap中配置配置中心相关属性
  • 配置一些固定不能被覆盖的属性

配置加载加载顺序

优先级从上到下

  • 命令行参数
  • 来自java:comp/env的JNDI属性
  • java系统属性
  • 操作系统环境变量
  • RandomValuePropertySource配置的random.*属性值
  • jar包外部的application-{profile}.properties
  • jar包内部的application-{profile}.properties
  • jar包外部的application.properties
  • jar包内部的application.properties
  • @Configuration注解类上的@PropertySource
  • 通过SpringApplication.setDefaultProperties指定的默认属性
https://zhhll.icu/2021/框架/springboot/基础/2.配置文件/

本文由mdnice多平台发布


bug生产者
20 声望0 粉丝