spring boot自动注入流程解析

本文详细介绍了SpringBoot中的依赖反转原理,重点讲解了自动注入的实现方式,包括构造器注入和setter方法注入。同时,阐述了@EnableAutoConfiguration注解在自动配置过程中的作用,以及@Autowired的工作流程,包括扫描bean、注入点解析和匹配bean的过程。文章深入浅出地解析了SpringBoot核心的依赖管理机制。
摘要由CSDN通过智能技术生成

一、概述
spring boot中的依赖反转的核心就是自动注入,也就是从ioc容器中获取bean按bytype、byname、construture等方式进行注入。
注入的方式通常来说主要分为手动注入以及自动注入
手动注入:

1.construture:构造方法注入
2.set方法注入

自动注入:

@autowired:
1.构造方法
2.普通非静态字段
3.普通方法

自动配置的开启涉及到spring boot中的一个核心注解@EnableAutoConfiguration,起底下包含一个@import子接口,将一个ImportSelector包含进来,selector从classpath中搜寻所有的META-INF/spring.factories配置文件,并将其中org.springframework.boot.autoconfigure.EnableutoConfiguration对应的配置项通过反射(Java Refletion)实例化为对应的标注了@Configuration的JavaConfig形式的IoC容器配置类,然后加载到beanFactory中。

二、@Autowired的工作流程
1.扫描bean
2.获取该bean下的候选注入点集合InjectionMeteData
2.1 null?
2.1.1通过反射遍历字段,静态?
2.1.2看有没有@Autowired接口?
2.1.3required==true?
2.1.4包装成InjectedElement装进InjectionMeteData
以同样的顺序遍历方法
3.以k-v方式存InjectionMeteData进缓存中
4.遍历InjectionMeteData中的各个候选注入点(bytype->byname)
4.1 通过beanFactory获取所有相同种类的bean
4.2 判断要注入的点是否属于集合类型
4.3 返回一个HashMap,key是字段名
4.4 size=1? 直接返回
4.5 map.get(key)即byname,看是否有相应的bean,
4.6 无相应bean:required=true?抛出异常:return;

懒,不想画流程图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值