Springboot自动装配源码分析
Springboot自动装配源码分析
1.从@SpringbootApplication点进去
2.可以看到核心的三个注解
@SpringbootConfiguration
@EnableAutoConfiguration
@ComponentScan
显然,实现自动装配的注解是@EnableAutoConfiguration,意为开启自动装配
至于另外两个,@SpringbootConfiguration其实和@Configuration注解一样,用于标志这是个配置文件;@ComponentScan是开启组件扫描,这里不加赘述。
从@EnableAutoConfiguration点进去
3.可以看到该注解上有两个重要的注解:@AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class);
这里起核心作用的是@Import(AutoConfigurationImportSelector.class)注解里面的AutoConfigurationImportSelector类,意为‘自动配置导入选择器‘,另一个注解自行查阅。
从AutoConfigurationImportSelector点进去
4.该类中有一个至关重要的方法:getCandidateConfiguration。从这个方法点进去
5.可以看到,这个方法会加载jar包中META-INF/spring.factories文件中配置的配置对象,自动配置定义的功能。
6.springboot中实现自动装配的在这个文件中,可以看到Springboot实现了AOP/PropertyPlaceholder/FreeMarker/HttpMessageConverter/jackson/DataSource/DataSourceTransactionManager/DispatcherServlet/WebMvc等等功能的自动装配。
总结:.springboot的自动装配原理
Springboot的自动装配是因为在启动类上贴有@SpringbootApplication注解,这个注解表明该类为一个spring的配置类。
项目启动时,会将贴有该注解的类的所在包名下的所有组件扫描加载到spring容器。
@SpringBootApplication注解内部是@SpringBootApplication = (默认属性)@SpringbootBootConfiguration+ @EnableAutoConfiguration + @ComponentScan的三大注解的集成
- @ComponentScan:开启组件扫描
2.@SpringbootBootConfiguration:作用等同于@Configuration注解,用于表明这是一个spring的配置类
3.@EnableAutoConfiguration:通过@import注解内部导入AutoConfigurationImportSelector(自动配置导入选择器),该类中有个getCandidateConfigurations方法加载jar包中META-INF/spring.factories文件中配置的配置对象,自动配置定义的功能
Springboot自动装配源码分析相关推荐
- SpringBoot自动装配源码解析
Spring Boot 自动装配原理 使用Spring Boot最方便的一点体验在于我们可以几零配置的搭建一个Spring Web项目,那么他是怎么做到不通过配置来对Bean完成注入的呢.这就要归功于 ...
- springboot集成mybatis源码分析-启动加载mybatis过程(二)
springboot集成mybatis源码分析-启动加载mybatis过程(二) 1.springboot项目最核心的就是自动加载配置,该功能则依赖的是一个注解@SpringBootApplicati ...
- springboot集成mybatis源码分析(一)
springboot集成mybatis源码分析(一) 本篇文章只是简单接受使用,具体源码解析请看后续文章 1.新建springboot项目,并导入mybatis的pom配置 配置数据库驱动和mybat ...
- springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三)
springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三) 例: package com.example.demo.service;import com.exa ...
- SpringBoot四大核心之自动装配——源码解析
四大核心 1.自动装配:简单配置甚至零配置即可运行项目 2.Actuator:springboot程序监控器 3.starter:jar包的引入,解决jar版本冲突问题 4.CLI:命令行 初学体验 ...
- 【SpringBoot】Spring手动装配和SpringBoot自动装配
文章目录 1. Warm up 1.1 setter注入 1.2 构造器注入 1.3 属性注入 2. Warm up again 2.1 基于XML的配置 2.2 基于JavaConfig类的配置 3 ...
- SpringBoot源码分析(二)之自动装配demo
SpringBoot源码分析(二)之自动装配demo 文章目录 SpringBoot源码分析(二)之自动装配demo 前言 一.创建RedissonTemplate的Maven服务 二.创建测试服务 ...
- SpringBoot 自动装配原理解析
自动装配是 Spring Boot 的核心部分,也是 Spring Boot 功能的基础,正是由于自动装配,才 将我们从 Bean 的繁复配置中解脱出来.那么 Spring Boot 中的自动装配指的 ...
- Spring自定义注解驱动开发使用及源码分析
目录 前言 注解驱动开发使用 需求 代码实现 测试效果 源码分析 BeanDefinitionRegistryPostProcessor接口 解析BeanDefinition 处理Bean上配置的注解 ...
最新文章
- Unity3D开发——LeRunning的人物角色信息的显示
- 数据结构之数组、链表、栈和队列
- python 嵌套字典key_查找和修改python嵌套字典(key,value)
- 批处理 设置电脑最佳性能_批处理最佳做法
- spring 与 guice 的区别好玩的好法(转)
- linux的find命令满屏权限不够提示
- latex中括号大小控制 [转]
- HTML input 控件
- python 数据可视化利器(bokeh、pyecharts)
- pytorch创建dataloader和可视化图片
- Important Tips
- USB协议详解第28讲(USB硬件设计和热拔插原理)
- 消灭非稳态噪音的利器 - AI 降噪
- python从键盘输入一个数、计算出大于n的最小素数_python 从键盘任意输入一个正整数n,并找出大于n的最小素数,这个程序怎么写...
- 微信营销十一(微信公众号吸粉技巧)
- 在我眼中的生活的苦难
- win7系统计算机文件夹缓慢,windows7搜索文件非常慢的解决办法以及优化方法
- 滑膜控制和粒子群优化算法
- E5 2670 V1 C1 C2版本区别
- Vue2.0 内置指令directives 与全局配置过滤filters
热门文章
- 第5章 运算符、表达式和语句
- 解决电脑软件可以上网,但是浏览器无法上网的问题
- 设置Windows10系统下电脑屏幕自动关闭的时间(只关闭屏幕,电脑主机不关机)
- van-field 校验手机号码格式
- php几个时间段去除重复,一个时间段内各地区数据和,发现重复地区不相加
- 【Qt开发】编译时报“undefined reference to“问题的解决方案
- 宝宝起名神器小程序源码
- 小马哥----高仿苹果5se 机型界面图面面观,低配机型 谨防假冒
- Ardupilot移植经验分享(1)
- python声纹识别_声纹识别算法、资源与应用(二)