spring boot 约定大于配置详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot 约定大于配置详解相关的知识,希望对你有一定的参考价值。

参考技术A SpringBoot的启动类头上都会带着@SpringBootApplication注解。先来看看@SpringBootApplication里面有什么。

包括耳熟能详的@ComponentScan 组件扫描注解和@SpringBootConfiguration 配置类注解。而中间的@EnableAutoConfiguration 正是实现约定大于配置的关键。

作用:将类路径下 META-INF/spring.factories 里面配置的所有EnableAutoConfiguration的值加入到了容器中。来看下SpringBoot的Jar包中有什么

可以看到配置了一堆的组件。随便找一个进去看看里面还有什么。

发现了一个和@EnableAutoConfiguration 及其相似的注解@EnableConfigurationProperties。有了@EnableConfigurationProperties 注解,该类就会在服务启动时,被自动加载进容器中。这就是为什么SpringBoot在启动时,会自动加载大量配置类的原因了。

最后说下@Conditional派生注解是干嘛用的。

@ConditionalOnClass(xxxxx.class) - 判断项目中是否有这个类

@ConditionalOnMissingBean(xxx.class) - 判断容器中是否有这个组件

@ConditionalOnProperty(prefix = “xxx.xxx”, value = “default”, havingValue = “true”) - 判断配置文件中是否存在某个配置,并赋上默认值

@ConditionalOnWebApplication - 判断当前应用是否是web应用,如果是,当前配置类生效

参考: https://blog.csdn.net/weixin_43776741/article/details/102502308

约定大于配置,配置大于代码

约定大于配置,配置大于代码

约定:就是各种约束文件,比如dtd文件,schema中的xsd文件等

配置:就是各种xml配置

代码:就是编写的java代码

 

举个例子,比如spring框架,最核心的一点就是要配置applicationContext.xml文件,该文件的头部分必须要含有各类spring功能的xsd信息,最后才是写各类代码!

以上是关于spring boot 约定大于配置详解的主要内容,如果未能解决你的问题,请参考以下文章

boot自动配置的原理

Spring Boot:Spring Boot项目配置详解

Spring Boot 启动 配置详解

spring-boot-starter-redis配置详解

详解Spring Boot配置文件之多环境配置

spring boot配置文件详解