springboot之application.yaml属性配置原理

springboot核心为自动装配原理,帮助我们省去了很多配置。

springboot配置,推荐使用yaml格式,不推荐properties。
yaml可以配置对象,还可以单文件配置多环境。传统properties配置多环境需要多文件。

1.springboot的appliaciton.yaml配置原理

application.yaml文件中的属性配置是如何在springboot中生效呢?

我们又能配置些什么呢?

application.yaml与spring.factories有巨大的联系.

回到自动装配原理,在springboot启动的时候,有一个注解@SpringBootApplication会做很多动作,最终是加载spring-boot-autoconfigure中下的/META-INF/spring.factories里面的自动配置类.

里面的配置类如下:

1.就拿WebMvcAutoConfiguration来说,使用Ctrl+B跳转进入其实现,

进入WebMvcAutoCOnfiguration 向下滑找到如下WebMvcAutoConfigurationAdapter内部类:

2.我们看到注解@EnableConfigurationProperties加载了WebMvcProperties.class类.使用Ctrl+B进入该类实现.

3.看到以上注解**@ConfigurationProperties(prefix=“spring.mvc”).这个是注解的意思就是加载application.yaml里面的配置.是以spring.mvc开头的属性配置.**

4.再到application.yaml,我们去配置属性.

输入srping.mvc可以看到自动提示补全了很多东西.补全的这些属性都是

WebMvcProperties的属性,如果没有这些属性,就不能配置,我们能配置的就是WebMvcProperties类的

里面的属性.

比如WebMvcProperties.class里面有个Format内部类,里面有dateTime属性.我们就可以在appliacation.yaml中配置.

结论:

所有的属性配置都是如此,首先加载spring.factories里面的自动配置类xxAutoConfiguration,这些自动配置类又会绑定xxProperties配置类,这些配置类使用@ConfigurationProperties绑定application.yaml配置文件.这样我们在applicationProperties中的属性配置就生效了.

2.配置文件的优先级

从上到小优先级降低,springboot默认的配置文件的位置就是classpath下的,优先级最低的。

项目根目录下的config是优先级最高。

classpath是类目录,也就是写java代码的目录。


file: ./config/

file./

classpath:  ./config/..

classpath: ./..

3.yaml多环境配置

多环境配置的话,使用 — 就可以分割环境

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43919632/article/details/111601966
今日推荐