目录
实现ImportBeanDefinitionRegistrar的方式
前沿
通过前面的例子我们可以知道,容器注入组件的方式有使用@Bean的方式,还有使用@ComponentScan加其他注解比如@controller、@Service等的方式。那么还有没有其他方式呢?
@Import注解的方式给容器注册组件
在我们配置类的上面加入注解
此时,我们查看容器中组件的名字
我们发现color和red都以全类名的形式作为name注册到了容器中。
实现ImportSelector的方式
public class ImportSelectorMy implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[]{"com.zhujie.pojo.Black","com.zhujie.pojo.Orange"};
}
}
在配置类中
此时再执行测试方法
实现ImportBeanDefinitionRegistrar的方式
public class ImportBeanDefinitionRegistrarMy implements ImportBeanDefinitionRegistrar {
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Purple.class);
rootBeanDefinition.setScope(BeanDefinition.SCOPE_PROTOTYPE);
registry.registerBeanDefinition("purple",rootBeanDefinition);
}
}
配置类
再运行测试方法