003-Spring4 扩展分析BeanPostProcessor、BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor
2018-01-21 16:22
851 查看
一、依赖注入ApplicationContext
方法一、@Autowired
创建一个User,内部使用ApplicationContextpackage com.lhx.spring.kuozhan2; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.stereotype.Component; @Component public class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { // TODO Auto-generated method stub } @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { for (int i = 0; i < 10; i++) { BeanDefinitionBuilder rootBeanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Person.class); rootBeanDefinition.addPropertyValue("name", "admin" + i); registry.registerBeanDefinition("person" + i, rootBeanDefinition.getBeanDefinition()); } } }
View Code
使用
public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.lhx.spring.kuozhan2"); System.out.println(context.getBean("person1")); context.getBeansOfType(Person.class).values().forEach(System.out::println); context.close(); }
当然在使用
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.lhx.spring.kuozhan2");
使用context也可以注入
context.registerBeanDefinition(beanName, beanDefinition);
beanDefinition定义可以使用:BeanDefinitionBuilder rootBeanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Person.class);
代码地址:https://github.com/bjlhx15/spring-boot.git
相关文章推荐
- 【spring源码分析】BeanDefinitionRegistryPostProcessor接口可自定义bean加入IOC
- Spring源码分析之BeanPostProcessor接口和BeanFactoryPostProcessor接口方法不执行原因分析
- Spring(24)——自定义BeanDefinitionRegistryPostProcessor
- Spring源码分析之BeanPostProcessor接口和BeanFactoryPostProcessor接口方法不执行原因分析
- spring 后置处理器BeanFactoryPostProcessor和BeanPostProcessor的用法和区别
- 【Spring学习24】容器扩展点:后置处理器BeanFactoryPostProcessor
- 关于Spring的Aware接口和后置处理器接口(BeanPostProcessor和BeanFactoryPostProcessor)的一些想法
- Spring源代码分析(4)---BeanFactoryPostProcessor(看见的不一定是真的)
- Spring的BeanFactoryPostProcessor和BeanPostProcessor
- spring 后置处理器BeanFactoryPostProcessor和BeanPostProcessor的用法和区别
- org.springframework.beans.factory.BeanDefinitionStoreException: Could not resolve bean definition re
- spring 后置处理器BeanFactoryPostProcessor和BeanPostProcessor的用法和区别
- Spring BeanFactory、ApplicationContext层次结构和BeanDefinition解析过程
- org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'd
- Spring ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry() 是如何工作的 ?
- spring 后置处理器BeanFactoryPostProcessor和BeanPostProcessor的用法和区别
- org.springframework.beans.factory.BeanDefinitionStoreException: Unrecognized xbean element mapping: beans in namespace h
- spring 后置处理器BeanFactoryPostProcessor和BeanPostProcessor的用法和区别
- spring 后置处理器BeanFactoryPostProcessor和BeanPostProcessor的用法和区别
- spring 后置处理器BeanFactoryPostProcessor和BeanPostProcessor的用法和区别