springboot核心为自动装配原理,帮助我们省去了很多配置。
springboot配置,推荐使用yaml格式,不推荐properties。
yaml可以配置对象,还可以单文件配置多环境。传统properties配置多环境需要多文件。
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中的属性配置就生效了.
从上到小优先级降低,springboot默认的配置文件的位置就是classpath下的,优先级最低的。
项目根目录下的config是优先级最高。
classpath是类目录,也就是写java代码的目录。
file: ./config/
file./
classpath: ./config/..
classpath: ./..
多环境配置的话,使用 — 就可以分割环境