springboot配置文件
虽然springboot提供了一系列的默认配置,但是还是需要使用配置文件来进行一些自定义的配置
springboot中配置文件名称叫做application.properties或者application.yml
配置文件加载顺序
springboot 启动会扫描以下位置的application.properties/yml文件作为Spring boot的默认配置文件
file:./config/ 当前项目根目录下的config目录下
file:./ 当前项目根目录下
classpath:/config/ 项目resources目录下的config目录下
classpath:/ 项目resources目录下
优先级由高到底,高优先级的配置会覆盖低优先级的配置,SpringBoot会从这四个位置全部加载主配置文件
也可以使用命令行启动项目时通过spring.config.location来改变默认的配置文件位置,多个路径使用逗号隔开,可以使用-spring.config.name来指定文件的名字
指定外部配置文件
可以使用@PropertySource来指定除默认配置文件之外的配置
1 |
|
自定义配置
对于自定义的配置,可以使用@ConfigurationProperties标注所属类来进行与配置文件映射,当然映射的前提是这个类要交由spring ioc容器进行管理,所以首先要将该类作为组件进行注册
1 |
|
这样做虽然可以正常的获取配置,但是在进行配置的时候发现在进行配置的时候没有提示,凭什么人家的有提示,我的没有
加上这个依赖
1 | <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指定的默认属性