Spring源码情操陶冶-AnnotationConfigBeanDefinitionParser注解配置解析器
2017-06-15 20:59
1266 查看
源码概览
对BeanDefinitionParser接口的实现方法
parse代码如下
@Override public BeanDefinition parse(Element element, ParserContext parserContext) { Object source = parserContext.extractSource(element); // Obtain bean definitions for all relevant BeanPostProcessors.主要的作用就是配置BeanPostProcessors Set<BeanDefinitionHolder> processorDefinitions = AnnotationConfigUtils.registerAnnotationConfigProcessors(parserContext.getRegistry(), source); // Register component for the surrounding <context:annotation-config> element. CompositeComponentDefinition compDefinition = new CompositeComponentDefinition(element.getTagName(), source); parserContext.pushContainingComponent(compDefinition); // Nest the concrete beans in the surrounding component. for (BeanDefinitionHolder processorDefinition : processorDefinitions) { parserContext.registerComponent(new BeanComponentDefinition(processorDefinition)); } // Finally register the composite component. parserContext.popAndRegisterContainingComponent(); return null; }
由上可述,我们明白了为什么配置了
context:component-scan节点等同于不需要配置
context:annotation-config节点,此处的代码类同与
ComponentScanBeanDefinitionParser#registerComponents方法,所以这里就不赘述了,可见>>>Spring源码情操陶冶-ComponentScanBeanDefinitionParser文件扫描解析器的
ComponentScanBeanDefinitionParser#registerComponents版块
小结
注册多个BeanPostProcessor接口实现类【供后续spring调用统一接口进行解析,比如>>>Spring源码情操陶冶-AbstractApplicationContext#invokeBeanFactoryPostProcessors可会执行解析
@Configuration】具体的有
ConfigurationClassPostProcessor解析
@Configuration注解类
AutowiredAnnotationBeanPostProcessor解析
@Autowired/@Value注解
RequiredAnnotationBeanPostProcessor解析
@Required注解
CommonAnnotationBeanPostProcessor解析
@Resource注解
PersistenceAnnotationBeanPostProcessor解析JPA注解,持久层
相关文章推荐
- SpringMVC源码情操陶冶-AnnotationDrivenBeanDefinitionParser注解解析器
- Context namespace element 'annotation-config' and its parser class [org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser]
- [org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser] are only available on
- Spring源码解析--Spring配置文件解析BeanDefinitionParserDelegate(四)
- [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only available on JDK 1.5 and higher 问题--MyEclipse设置JDK版本
- Spring源码学习--Spring配置文件解析BeanDefinitionDocumentReader(三)
- spring 源码解读与设计详解: 7 BeanDefinitionParserDelegate深入解读
- spring 源码解读与设计详解:6 BeanDefinitionParserDelegate与资源解析
- Spring源码学习--Spring配置文件解析BeanDefinitionReader(二)
- spring源码学习之四 BeanDefinitionParserDelegate分析
- AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
- Spring MVC 整合DWR出现Cannot locate BeanDefinitionParser for element [annotation-config]Offending
- ssh整合的时候,[org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only availab
- AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
- [转]Tomcat启动报错:AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
- 解析Spring源码(8)--BeanDefinitionParserDelegate
- mvc:annotation-driven与context:annotation-config -- AnnotationDrivenBeanDefinitionParser
- 关于 AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
- SpringBoot源码分析之BeanDefinitionLoader注册主Configuration的Java配置类
- Spring整合Dwr,Cannot locate BeanDefinitionParser for element [annotation-scan]