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的三大注解的集成

  1. @ComponentScan:开启组件扫描
    2.@SpringbootBootConfiguration:作用等同于@Configuration注解,用于表明这是一个spring的配置类
    3.@EnableAutoConfiguration:通过@import注解内部导入AutoConfigurationImportSelector(自动配置导入选择器),该类中有个getCandidateConfigurations方法加载jar包中META-INF/spring.factories文件中配置的配置对象,自动配置定义的功能

Springboot自动装配源码分析相关推荐

  1. SpringBoot自动装配源码解析

    Spring Boot 自动装配原理 使用Spring Boot最方便的一点体验在于我们可以几零配置的搭建一个Spring Web项目,那么他是怎么做到不通过配置来对Bean完成注入的呢.这就要归功于 ...

  2. springboot集成mybatis源码分析-启动加载mybatis过程(二)

    springboot集成mybatis源码分析-启动加载mybatis过程(二) 1.springboot项目最核心的就是自动加载配置,该功能则依赖的是一个注解@SpringBootApplicati ...

  3. springboot集成mybatis源码分析(一)

    springboot集成mybatis源码分析(一) 本篇文章只是简单接受使用,具体源码解析请看后续文章 1.新建springboot项目,并导入mybatis的pom配置 配置数据库驱动和mybat ...

  4. springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三)

    springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三) 例: package com.example.demo.service;import com.exa ...

  5. SpringBoot四大核心之自动装配——源码解析

    四大核心 1.自动装配:简单配置甚至零配置即可运行项目 2.Actuator:springboot程序监控器 3.starter:jar包的引入,解决jar版本冲突问题 4.CLI:命令行 初学体验 ...

  6. 【SpringBoot】Spring手动装配和SpringBoot自动装配

    文章目录 1. Warm up 1.1 setter注入 1.2 构造器注入 1.3 属性注入 2. Warm up again 2.1 基于XML的配置 2.2 基于JavaConfig类的配置 3 ...

  7. SpringBoot源码分析(二)之自动装配demo

    SpringBoot源码分析(二)之自动装配demo 文章目录 SpringBoot源码分析(二)之自动装配demo 前言 一.创建RedissonTemplate的Maven服务 二.创建测试服务 ...

  8. SpringBoot 自动装配原理解析

    自动装配是 Spring Boot 的核心部分,也是 Spring Boot 功能的基础,正是由于自动装配,才 将我们从 Bean 的繁复配置中解脱出来.那么 Spring Boot 中的自动装配指的 ...

  9. Spring自定义注解驱动开发使用及源码分析

    目录 前言 注解驱动开发使用 需求 代码实现 测试效果 源码分析 BeanDefinitionRegistryPostProcessor接口 解析BeanDefinition 处理Bean上配置的注解 ...

最新文章

  1. Unity3D开发——LeRunning的人物角色信息的显示
  2. 数据结构之数组、链表、栈和队列
  3. python 嵌套字典key_查找和修改python嵌套字典(key,value)
  4. 批处理 设置电脑最佳性能_批处理最佳做法
  5. spring 与 guice 的区别好玩的好法(转)
  6. linux的find命令满屏权限不够提示
  7. latex中括号大小控制 [转]
  8. HTML input 控件
  9. python 数据可视化利器(bokeh、pyecharts)
  10. pytorch创建dataloader和可视化图片
  11. Important Tips
  12. USB协议详解第28讲(USB硬件设计和热拔插原理)
  13. 消灭非稳态噪音的利器 - AI 降噪
  14. python从键盘输入一个数、计算出大于n的最小素数_python 从键盘任意输入一个正整数n,并找出大于n的最小素数,这个程序怎么写...
  15. 微信营销十一(微信公众号吸粉技巧)
  16. 在我眼中的生活的苦难
  17. win7系统计算机文件夹缓慢,windows7搜索文件非常慢的解决办法以及优化方法
  18. 滑膜控制和粒子群优化算法
  19. E5 2670 V1 C1 C2版本区别
  20. Vue2.0 内置指令directives 与全局配置过滤filters

热门文章

  1. 第5章 运算符、表达式和语句
  2. 解决电脑软件可以上网,但是浏览器无法上网的问题
  3. 设置Windows10系统下电脑屏幕自动关闭的时间(只关闭屏幕,电脑主机不关机)
  4. van-field 校验手机号码格式
  5. php几个时间段去除重复,一个时间段内各地区数据和,发现重复地区不相加
  6. 【Qt开发】编译时报“undefined reference to“问题的解决方案
  7. 宝宝起名神器小程序源码
  8. 小马哥----高仿苹果5se 机型界面图面面观,低配机型 谨防假冒
  9. Ardupilot移植经验分享(1)
  10. python声纹识别_声纹识别算法、资源与应用(二)