Spring Boot @Import

本文详细介绍了SpringBoot中使用@Import注解的三种方式来将类实例注入到SpringIOCContainer中:1) 直接注入;2) 实现ImportBeanDefinitionRegistrar接口注入,通过BeanDefinitionRegistry动态装配Bean;3) 实现ImportSelector接口,根据自定义逻辑返回要导入的组件全类名。这三种方式为SpringBoot应用的配置提供了灵活性。

SpringBoot 提供了 三种使用 @Import 将 类实例注入至 Spring IOC Container中 的实例。

1:直接注入


@Component
@Import({Customer.class,Broker.class})
/**
 *使用Import 将指定的类的实例注入至Spring 容器中
 */
public class ImportDirect {

}

 

2:实现 ImportBeanDefinitionRegistrar 接口 注入

/**
 * registerBeanDefinitions 方法中的参数 BeanDefinitionRegistry 可以往Spring IOC Container 中动态地装配Bean
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {

        //手动注入 Forwards 类的实例
        BeanDefinitionBuilder beanDef_forwards = BeanDefinitionBuilder.rootBeanDefinition(Forwards.class);
        registry.registerBeanDefinition("forwards", beanDef_forwards.getBeanDefinition());

}

3:实现 ImportSelector 注入


//自定义逻辑返回需要导入的组件
public class MyImportSelector implements ImportSelector {
	// 返回值就是导入到容器中的组件全类名
	// AnnotationMetadata:当前标注@Import注解的类的所有注解信息
	public String[] selectImports(AnnotationMetadata importingClassMetadata) {
		return new String[] { "test.spring.ZhangSan", "test.spring.LiSi", "test.spring.WangWu" };
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值