SpringBoot自动装配

1、SpringBoot自动装配是什么?

 

关键文件:META-INF/spring.factories

启动器:spring-boot-starter-XXX

文件中的配置的类型信息加载到Spring容器,并执行类中定义的各种操作,直接引入一个starter就可以使用对应的第三方组件的功能(例如:redis)

自动装配:可以通过注解或简单配置就能够在SpringBoot中实现某个技术功能。

 

 

2、SpringBoot自动装配的具体流程:

 

(1)核心注解@SpringBootApplication(包含@EnableAutoConfiguration、@Configuration、@ComponentScan)

@EnableAutoConfiguration(启动SpringBoot自动配置机制)

@Configuration(允许在容器中注册额外的bean或导入其它配置类)

@ComponentScan(扫描@Component、@Service、@Controller注解的bean)

(2)@EnableAutoConfiguration —— 实现自动装配的核心注解

@EnableAutoConfiguration通过 AutoConfigurationImportSelector类实现

(3)AutoConfigurationImportSelector类——加载自动装配类

通过SpringFactoriesLoader 最终加载META-INF/spring.factories中的自动装配类

实现了ImportSelector接口中的selectImports()方法

(4)selectImports() 方法 —— 获取所有符合条件的类的全限定类名,并将这些类加载到ioc容器中

(5)getAutoConfigurationEntry()——负责加载自动装配类

(6)笼统流程:

1、判断自动装配是否打开

application.properties/application.yml中spring.boot.enableautoconfiguration=true

2、获取EnableAutoConfiguration注解中的exclude和excludeName

3、SpringFactoriesLoader获取需要自动装配的所有配置类,读取 spring.factories

读取XXXAutoConfiguration,按需加载组件

4、@ConditionalOnXXX 按需加载组件,满足条件,加载的类才会生效

例:@ConditionalOnBean:当容器中有指定Bean的条件下

@ConditionalOnClass:当类路径下有指定类的条件下

总结:SpingBoot所有的自动配置在启动时,会通过@SpringBootApplication中通过SpringFactoriesLoader进行扫描获取META-INF/spring.factories文件获取类,@SpringBootApplication其中的@EnableAutoConfiguration通过AutoConfigurationImportSelector类实现ImportSelector接口中的selectImports()方法,通过ConditionalOnXXX注解获取所有符合条件的类,然后调用getAutoConfigurationEntry()方法加载自动装配类。

 

 

3、SpringBoot中的run()方法

 

(1)SpringApplication.run(XXX.class,args) 通过反射启动

(2)SpringApplication类的作用

1、判断应用的类型是普通项目还是WEB项目

2、查找并加载所有可以的初始化器,设置到initializers属性中

3、找出所有的应用程序监听器,设置到listeners属性中

3、推动并设置main方法的定义类,找到运行的主类

posted @   与长安故里  阅读(798)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示