常見(jiàn)的, 我們可以使用@Service @Component @Bean 等注解將對(duì)象注冊(cè)到ioc 容器中, 其實(shí)我們還可以使用代碼將對(duì)象放入ico 容器中. 如下
@Component
public class CustomizeBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
//創(chuàng)建一個(gè)bean的定義類的對(duì)象村视,bean類型是CalculateServiceImpl
RootBeanDefinition helloBean1 = new RootBeanDefinition(HelloServiceImplV1.class);
RootBeanDefinition helloBean2 = new RootBeanDefinition(HelloServiceImplV2.class);
//bean的定義注冊(cè)到spring環(huán)境
beanDefinitionRegistry.registerBeanDefinition("helloServiceImplV1", helloBean1);
beanDefinitionRegistry.registerBeanDefinition("helloServiceImplV2", helloBean2);
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
//打印當(dāng)前堆棧信息
//Utils.printTrack("execute postProcessBeanFactory");
System.out.println("abc");
}
}