BeanDefinitionRegistryPostProces
2021-03-07 本文已影响0人
山间草夫
常见的, 我们可以使用@Service @Component @Bean 等注解将对象注册到ioc 容器中, 其实我们还可以使用代码将对象放入ico 容器中. 如下
@Component
public class CustomizeBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
//创建一个bean的定义类的对象,bean类型是CalculateServiceImpl
RootBeanDefinition helloBean1 = new RootBeanDefinition(HelloServiceImplV1.class);
RootBeanDefinition helloBean2 = new RootBeanDefinition(HelloServiceImplV2.class);
//bean的定义注册到spring环境
beanDefinitionRegistry.registerBeanDefinition("helloServiceImplV1", helloBean1);
beanDefinitionRegistry.registerBeanDefinition("helloServiceImplV2", helloBean2);
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
//打印当前堆栈信息
//Utils.printTrack("execute postProcessBeanFactory");
System.out.println("abc");
}
}