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

被折叠的 条评论
为什么被折叠?



