0%

springboot配置文件

springboot配置文件

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Component
@ConfigurationProperties(prefix = "custom")
public class CustomConfig {

private String name;

public String getName() {
return name;
}

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

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

加上这个依赖

1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

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

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

配置文件加载顺序

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

  • file:./config/

  • file:./

  • classpath:/config/

  • classpath:/

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

也可以使用命令行启动项目时通过spring.config.location来改变默认的配置文件位置

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

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

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