SpringBoot自动配置原理分析

Spring Boot

Starter

开箱即用的组件

自动装配的功能

Spring Framework > IOC

applicationContext.xml

HelloController hc = (HelloController)context.getbean("name")

Bean 的装配

--》

配置文件过多》难以维护

spring 2.5 注解的支持

@Services / @Repository / @Controller / ...

<context:componet-scan

xml文件依然存在

spring 3.0 之后 》 javaconfig 》 无配置化

@Configuration

手动的方式把Bean装配到IOC容器

Spring里面本身就提供了这样的支持

Enable* 自动配置

自动将Bean装配到IOC容器

EnableAutoConfiguration 自动装配

自动装配依赖于spring的javaconfig

Spring中的Javaconfig

xml

context:component-scan/

JavaConfig

@ComponetScan 》 扫描@Service @Repository …… 注解修饰的类,装配到IOC容器

@import

Spring IOC 容器,如何实现bean的装配

@Enable

ImportSelector

导入 选择 》 选择性导入 》 选择性导入Bean对象

导入规范

  1. 引入Starter组件,就能实现相关的Bean的自动装配。

  2. (约定优于配置)xxx-spring-boot-starter(非官方) / spring-boot-starter-xxx)(官方提供)

  3. Starter可以自己构建 》 也是为了实现自动装配。

  4. 或者说Starter中必须要基于某种标准定义一个文件或者类,才能够使得Spring Boot 自动装配扫描到对应的文件或者类来实现对应的Starter组件中的Bean的自动装配。

SPI机制 JDK

java.jdbc.Driver 》 数据库驱动类(JDK提供的标准)

SpringFactoriesLoader

spring里面提供的SPI

Dubbo

Spring Boot 官方和个人组织的Starter的区别

@ConditionalOnClass

官方提供的Starter相当于一个开关,只需要这个开关满足条件就就会触发装配

自动装配思想理解图

原视频观看

posted @ 2020-05-03 12:03  张什么锋  阅读(245)  评论(0编辑  收藏  举报