@Import注解
@Import()
中写入的类会被放入到ioc容器中,并会被认为是一个配置bean- 当
@Import()
中引入的类是ImportSelector的实现类时,会将selectImports方法返回的String数组中的类都加入到ioc容器中public class UserService implements ImportSelector { @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { return new String[]{OrderService.class.getName()}; } }
- 当
@Import()
中引入的类是ImportBeanDefinitionRegistrar的实现类时,可以通过registerBeanDefinitions方法,注册一些bean到ioc容器中public class UserService implements ImportBeanDefinitionRegistrar { @Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder .genericBeanDefinition() .getBeanDefinition(); beanDefinition.setBeanClass(OrderService.class); registry.registerBeanDefinition("orderService",beanDefinition); } }