@Import注解 -【Spring底层原理】

本文介绍了Spring框架中@Import注解的用法,包括通过导入注解的配置类、导入的实现类(ImportSelector和ImportBeanDefinitionRegistrar)将组件注册到容器中。通过实例分析和源码追踪,详细阐述了@Import的三种使用方法及其效果,帮助读者理解其工作原理。
摘要由CSDN通过智能技术生成

二、实例分析

三、源码追踪


一、注解用法

@Import注解也是用来给容器注册组件的,使用@Import注解快速给容器中导入一个组件有三种方法

  1. 导入@Configuration注解的配置类使用@Import(要导入到容器中的组件):容器中就会自动注册这个组件,ID默认为全类名
  1. 导入ImportSelector的实现类:通过实现ImportSelector类,实现selectImports方法,返回需要导入组件的全类名数组
  1. 导入ImportBeanDefinitionRegistrar的实现类:通过实现ImportBeanDefinitionRegistrar类,实现registerBeanDefinitions方法手动注册Bean到容器中

@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface Import {

Class<?>[] value();

}

通过注解源码可以看到,@Import注解作用在类上,并且参数可以是class类型的数组,从这里可以看出可以使用@Import注解一次导入多个组件到容器中

二、实例分析

从上面的注解用法来看,使用@Import注解给容器导入组件有三种方法,并且该注解作用在方法上,一次可以导入多个组件,因此,这里我们直接将三种方法都放在一个@Import注解来进行导入。如下案例需求:使用方法一注入User类、使用方法二注入Person类、使用方法三注入Animal类。

【1】导入@Configuration注解的配置类使用@Import

// 启动类,通过打印容器中的Bean来判断是否注入

@Test

public void TestMain(){

AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

String[] beanNames = applicationContext.getBeanDefinitionNames();

for (String beanName :

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值