SpringBoot自动化配置
SpringBoot自动化配置
一.SpringBoot自动化配置原理
1.SpringBoot引导类注解介绍
在SpringBoot的启动引导类上有一个@SpringBootApplication注解
这个注解中有三个Spring的注解,分别是 @SpringBootConfiguration / @CompoenetScan / @EnableAutoConfiguration
2.@SpringBootConfiguration注解介绍
在@SpringBootConfiguration注解中我们能看到一个@Configuration注解,此注解的作用是声明此类是一个配置类,所以标记了@SpringBootConfiguration注解的类,就是一个配置类
3.@CompoenetScan注解介绍
此注解为组件扫描注解,作用是来指定扫描路径,扫描路径为引导类所在的包及子包下的组件
4.@EnableAutoConfiguration注解介绍
在@EnableAutoConfiguration注解上有一个@Import注解,导入了一个配置类,这个配置类是AutoConfigurationImportSelector,在配置类中有一个方法,在这个配置类加载时会自动调用
在这个方法中框起来的部分会去扫描 META-INF/spring.factories的文件中Key为EnableAutoConfiguration的所有数据,同时还会扫描 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 中的数据,再经过@CondtionalXxx的条件判断,把满足条件的内容加载到内存中,封装成一字符串数组
二.自动化配置的实现
在启动类中的run方法,会把上面注解实现加载到内存中的字符串数组根据条件反射创建对象,把对象当作bean注入到Spring容器中
SpringBoot自动化配置的更多相关文章
- @Conditional注解分析,SpringBoot自动化配置的关键
基于SpringBoot 2.1.5.RELEASE分析 @Conditional系列注解 @Conditional系列注解是SpringBoot自动化配置的核心要点之一,主要用于设定条件,在达到一定 ...
- SpringBoot自动化配置之一:SpringBoot内部的一些自动化配置原理
springboot用来简化Spring框架带来的大量XML配置以及复杂的依赖管理,让开发人员可以更加关注业务逻辑的开发. 比如不使用springboot而使用SpringMVC作为web框架进行开发 ...
- SpringBoot自动化配置之二:自动配置(AutoConfigure)原理、EnableAutoConfiguration、condition
自动配置绝对算得上是Spring Boot的最大亮点,完美的展示了CoC约定优于配置: Spring Boot能自动配置Spring各种子项目(Spring MVC, Spring Security, ...
- 让SpringBoot自动化配置不再神秘
本文若有任何纰漏.错误,还请不吝指出! 注:本文提到的Spring容器或者Bean容器,或者Spring Bean容器,都是指同一个事情,那就是代指BeanFactory.关于BeanFactory, ...
- SpringBoot自动化配置的注解开关原理
我们以一个最简单的例子来完成这个需求:定义一个注解EnableContentService,使用了这个注解的程序会自动注入ContentService这个bean. @Retention(Retent ...
- SpringBoot自动化配置之四:SpringBoot 之Starter(自动配置)、Command-line runners
Spring Boot Starter是在SpringBoot组件中被提出来的一种概念,stackoverflow上面已经有人概括了这个starter是什么东西,想看完整的回答戳这里 Starter ...
- SpringBoot自动化配置之三:深入SpringBoot:自定义EnableAutoConfiguration
前言 上面几篇文章介绍了SpringFramework的一些原理,这里开始介绍一下SpringBoot,并通过自定义一些功能来介绍SpringBoot的原理.SpringBoot在SpringFram ...
- SpringBoot自动化配置之四:@Conditional注解详解
前言 之前在分析spring boot 源码时导出可见@ConditionalOnBean 之类的注解,那么它到底是如何使用的以及其工作流程如何,我们这里就围绕以下几点来分析: @Conditiona ...
- springboot笔记-1.自动化配置的关键
最近发现看过的东西容易忘,但是写一遍之后印象倒是会深刻的多. 总所周知springboot极大的简化了java开发繁琐性,而其最大的优势应该就是自动化配置了.比如要使用redis,我们直接引入相关的包 ...
- Spring Boot 探索系列 - 自动化配置篇
26. Logging Prev Part IV. Spring Boot features Next 26. Logging Spring Boot uses Commons Logging f ...
随机推荐
- kafka如何保证数据的消息不丢失(最简洁)
一.kafka 本身配置层面1.1.replication.factor 默认值1创建kafka的topic时候,每个分区设置的副本数, 根据broker数量酌情设置, 建议业界通常做法设置为3 1. ...
- 图扑 HT for Web 手机端运维管理系统
随着信息技术的快速发展,网络技术的应用涉及到人们生活的方方面面.其中,手机运维管理系统可提供数字化.智能化的方式,帮助企业和组织管理监控企业的 IT 环境,提高运维效率.降低维护成本.增强安全性.提升 ...
- Serverless 奇点已来,下一个十年将驶向何方?
本文整理自 QCon 上海站 2022 丁宇(叔同)的演讲内容. 以前构建应用,需要买 ECS 实例,搭建开源软件体系然后维护它,流量大了扩容,流量小了缩容,整个过程非常复杂繁琐. 用了 Server ...
- hdu 5547
***题意:4*4数独,要求在同一行同一列不能有相同的数字,另外在2*2的小单元里也不能有相同的数字 思路:DFS暴力搜索, 每个位置填1-4,递归回溯,判断是否符合条件,递归到最后一个位置+1则输出 ...
- 洛谷 P9683 A Certain Forbidden Index 题解
题目链接:\(\color{Purple}\texttt{P9683 A Certain Forbidden Index}\). 填坑.提供一个相对好写的做法. 考虑把一堆不交的区间绑在一起问(即先询 ...
- 使用XStream,XMLSerializer 解析及格式转换
博主原创,转载请注明出处 1.引入对应的maven依赖: <!--xstream--> <dependency> <groupId>com.thoughtworks ...
- TCP 三次握手和四次挥手详解
转载请注明出处: TCP协议(Transmission Control Protocol) 面向连接的,可靠的,基于字节流的传输层通信协议 特点: 基于连接的:数据传输之前需要建立连接 全双工的:双向 ...
- WPF|分享一个登录界面设计
分享一个登录界面,先看效果图: 准备 文中使用到了一些图标: 我们可以从 iconfont免费下载: 代码简单说明 请随手创建一个WPF项目(.NET Framework..NET 5\6\7皆可), ...
- 08-Shell计算命令
1.expr命令 expr (evaluate expressions 的缩写),译为"表达式求值".Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计 ...
- 16-集电极开路门(OC门)
集电极开路门(OC门) OC门 两个与非门,要实现非,一般来讲再与一下就可以. 能不能将输出端并在一起?普通的门电路永远不可能输出端并在一起,连在一起的. TTL与非门输出端连在一起 集电极断开之后连 ...