第12章 Spring的Import注解深入分析

本文详细探讨了Spring框架中的@Import注解,用于将Bean对象导入到Spring容器。内容涵盖@Import的使用,如导入普通类、通过ImportSelector和ImportBeanDefinitionRegistrar方式导入。同时,对源码进行了分析,重点关注ConfigurationClassParser和ConfigurationClassBeanDefinitionReader两个关键类在处理@Import注解时的角色和流程。最后,提供了相关参考资料以供进一步学习。
摘要由CSDN通过智能技术生成

Import注解用来导入Bean对象到Spring容器中,最常用就是导入被 @Configuration 标识的配置类。@Import 注解允许导入 @Configuration 类、ImportSelectorImportBeanDefinitionRegister的实现类。

使用
导入普通类

定义 Car 类,然后通过 @Import 注解把 Car 导入Spring容器中,无须手动注入它。

public class Car {
      
}

定义配置类,使用 @Import 注解标识。注意:即时配置类没有被 @Configuration 标识,被 @Import注解标识的类也会被Spring当成配置类处理。

@Import(Car.class)
public class AccountConfig3 {
   
}

测试

public class AnnotationConfigTest {
   
	public static void main(String[] args) throws IOException {
   
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AccountConfig3.class);
        Car bean = context.getBean(Car.class);
		System.out.println(bean);
    }
}
ImportSelector的方式导入
public class TestImportSelector implements ImportSelector {
   

	@Override
	public String[] selectImports(AnnotationMetadata importingClassMetadata) {
   
		return new String[]{
   "com.test.annotationConfig.entity.TestBean1"};
	}
}
ImportBeanDefinitionRegistrar的方式导入
public class TestImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
   

	@Override
	public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值