java框架核心技术

本文详细介绍了Java技术中Spring框架的@Import和@EnableAutoConfiguration注解的用法,包括导入Bean、配置类、ImportSelector和ImportBeanDefinitionRegistrar,以及EnableAutoConfiguration加载原理,展示了SpringBoot如何通过元注解管理和配置自动配置过程。
摘要由CSDN通过智能技术生成

前言

所有上层建筑都基于核心正所谓十年树木百年根基,java也不例外 Spring基础框架 以至于现在巅峰技术微服务基于几个实现对spring进行封完成自动配置
@SpringBootApplication(元注解 @ComponentScan、@SpringBootConfiguration、@EnableAutoConfiguration分层以下深入
@Import注解
@Enable底层依赖于@Import注解,使用@Import导入的类被Spring加载到IOC中。
@EnableAutoConfiguration
@EnableAutoConfiguration注解实际依赖与@Import(ImportSelector.class)进行Bean的初始化。
————————————————

第一节 @Import的4种用法

1. 导入Bean

@Import(User.class)
在这里插入图片描述Import直接导入Bean,直接通过简写的名称是无法获取的,导入的Bean可以通过类全名获取。也可以如图,通过getBean(Class aClass)来获取。

2. 导入配置类XxxConfig

@Import(UserConfig.class)
使用Import注解时,@Configuration注解是不需要的。而UserConfig下的所有Bean都会被加载。
在这里插入图片描述通过例子,同样可以获取到Bean

3. 导入 ImportSelector实现类。(一般用于加载配置文件种的类)

在pojo里自定义ImportSelector
在这里插入图片描述然后在enable工程里启动类里导入这个ImportSelector
在这里插入图片描述
运行之后,同样可以获取到User
注:这种配置方式会通过配置文件的形式存在,不会直接写到方法里面。

4. 导入ImportBeanDefinitionRegistrar实现类

在pojo工程里自定义ImportBeanDefinitionRegistrar
在这里插入图片描述然后在enable工程启动类导入这个类,并运行,同样可以获取到User。

1 @Import(MyImportBeanDefinitionRegistrar.class)
在这里插入图片描述

第二节、EnableAutoConfiguration注解原理解析

通过跟踪@SpringBootApplication的源码,去了解它的加载流程。
在这里插入图片描述细节重点,进入到getAutoConfigurationEntry
在这里插入图片描述接着继续进去看重点的加载方法getAutoConfigurationEntry
在这里插入图片描述进到META-INF/spring.factories里面去看(位置:spring-boot-autoconfigure.jar下)
在这里插入图片描述通过上面的图文流程,可以知道它的加载原理。

当然这些类不可能都被加载,这里点进一个类查看源码。
在这里插入图片描述进到源码发现,实际上它是有@Conditional条件限制的,只有满足条件才会被加载,否则不会被初始化加载到容器中。
在这里插入图片描述结论:

  • Springboot在加载配置类的时候,内部实际上就是通过@ImportSelector来完成的(@Import(AutoConfigurationImportSelector.class))。
  • 通过源码跟踪,我们发现实际上它的配置都来自于META-INF/spring.fatcories,该文件定义了大量的配置类。Springboot启动时会加载这些类,初始化Bean。
  • 而且加载这些配置初始化Bean的时候,只有满足Condition条件才会加载到容器种
    ————————————————

爱情没有那么美

2014-01-07 2014-01-09 2014-01-11 2014-01-13 2014-01-15 2014-01-17 2014-01-19 2014-01-21 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值