spring源码解析 关于注解
来源:互联网 发布:2011年小牛夺冠数据 编辑:程序博客网 时间:2024/06/06 12:10
类 AbstractRefreshableApplicationContext
//工厂刷新 obtainFreshBeanFactory>refreshBeanFactory>loadBeanDefinitions
类 AbstractXmlApplicationContext
XmlBeanDefinitionReader从xml读取beandefinition loadBeanDefinitions 加载bean定义
//加载bean定义public int loadBeanDefinitions(String... locations) throws BeanDefinitionStoreException {Assert.notNull(locations, "Location array must not be null");int counter = 0;for (String location : locations) {counter += loadBeanDefinitions(location);}return counter;}
BeanDefinitionParserDelegate#bean定义的解析器
//格式化非默认的元素public BeanDefinition parseCustomElement(Element ele, BeanDefinition containingBd) {String namespaceUri = getNamespaceURI(ele);//spring.handler读取该element的解析器NamespaceHandler handler = this.readerContext.getNamespaceHandlerResolver().resolve(namespaceUri);if (handler == null) {error("Unable to locate Spring NamespaceHandler for XML schema namespace [" + namespaceUri + "]", ele);return null;}return handler.parse(ele, new ParserContext(this.readerContext, this, containingBd));}
META-INFO下的spring.handler
NamespaceHandlerResolver using mappings {http://www.w3.org/ns/ws-policy=org.apache.cxf.ws.policy.spring.PolicyNamespaceHandler, http://www.springframework.org/schema/jdbc=org.springframework.jdbc.config.JdbcNamespaceHandler, http://www.springframework.org/schema/oxm=org.springframework.oxm.config.OxmNamespaceHandler, http://cxf.apache.org/jaxws=org.apache.cxf.jaxws.spring.NamespaceHandler, http://schemas.xmlsoap.org/ws/2004/09/policy=org.apache.cxf.ws.policy.spring.PolicyNamespaceHandler, http://cxf.apache.org/core=org.apache.cxf.bus.spring.NamespaceHandler, http://www.springframework.org/schema/c=org.springframework.beans.factory.xml.SimpleConstructorNamespaceHandler, http://www.springframework.org/schema/aop=org.springframework.aop.config.AopNamespaceHandler, http://www.springframework.org/schema/mvc=org.springframework.web.servlet.config.MvcNamespaceHandler, http://www.springframework.org/schema/util=org.springframework.beans.factory.xml.UtilNamespaceHandler, http://www.w3.org/2006/07/ws-policy=org.apache.cxf.ws.policy.spring.PolicyNamespaceHandler, http://cxf.apache.org/simple=org.apache.cxf.frontend.spring.NamespaceHandler, http://cxf.apache.org/policy=org.apache.cxf.ws.policy.spring.NamespaceHandler, http://mybatis.org/schema/mybatis-spring=org.mybatis.spring.config.NamespaceHandler, http://www.springframework.org/schema/p=org.springframework.beans.factory.xml.SimplePropertyNamespaceHandler, http://www.springframework.org/schema/tx=org.springframework.transaction.config.TxNamespaceHandler, http://cxf.apache.org/bindings/soap=org.apache.cxf.binding.soap.spring.NamespaceHandler, http://cxf.apache.org/transports/http/configuration=org.apache.cxf.transport.http.spring.NamespaceHandler, http://www.springframework.org/schema/cache=org.springframework.cache.config.CacheNamespaceHandler, http://www.springframework.org/schema/lang=org.springframework.scripting.config.LangNamespaceHandler, http://www.springframework.org/schema/task=org.springframework.scheduling.config.TaskNamespaceHandler, http://www.springframework.org/schema/web-services=org.springframework.ws.config.WebServicesNamespaceHandler, http://www.springframework.org/schema/context=org.springframework.context.config.ContextNamespaceHandler, http://cxf.apache.org/ws/addressing=org.apache.cxf.ws.addressing.spring.NamespaceHandler, http://www.springframework.org/schema/jee=org.springframework.ejb.config.JeeNamespaceHandler}
//本例子以ContextNamespaceHandler为例子 获取解析器
public class ContextNamespaceHandler extends NamespaceHandlerSupport {public void init() {registerBeanDefinitionParser("property-placeholder", new PropertyPlaceholderBeanDefinitionParser());registerBeanDefinitionParser("property-override", new PropertyOverrideBeanDefinitionParser());registerBeanDefinitionParser("annotation-config", new AnnotationConfigBeanDefinitionParser());registerBeanDefinitionParser("component-scan", new ComponentScanBeanDefinitionParser());registerBeanDefinitionParser("load-time-weaver", new LoadTimeWeaverBeanDefinitionParser());registerBeanDefinitionParser("spring-configured", new SpringConfiguredBeanDefinitionParser());registerBeanDefinitionParser("mbean-export", new MBeanExportBeanDefinitionParser());registerBeanDefinitionParser("mbean-server", new MBeanServerBeanDefinitionParser());}}
//刷新定义的注解
ClassPathScanningCandidateComponentProvider
扫描注解Set doScan(String… basePackages) 获取所有注解的bean
spring的bean都放在beanDefinitionMap
spring的names放在beanDefinitionNames
0 0
- spring源码解析 关于注解
- Spring源码解析之注解的扫描
- 【Spring实战】Spring注解配置工作原理源码解析
- 【第二章:源码解析】Spring的BeanFactory的接口注解
- Spring Cloud源码解析:一个注解加载Eureka client
- Spring各种依赖注入注解的区别(源码解析)
- Spring提取@Transactional事务注解的源码解析
- Spring注解详细解析
- spring注解原理解析
- Spring注解实现解析
- Spring注解解析
- spring 注解@primary解析
- Spring 注解解析
- Spring @EnableScheduling 注解解析
- spring注解源码分析-解析和注入注解配置的资源
- 关于spring注解
- 关于Spring 注解 IOC
- 关于spring的注解
- 虚拟化技术基础知识全面了解
- Android四大组件之Service
- 关于Vue
- TCP/IP 三次握手状态变化
- <context:component-scan>使用说明
- spring源码解析 关于注解
- 题目1444:More is better
- Java学习之Scanner
- 【数据结构基础】串的模式匹配-BF算法
- 【Java新手笔记六】hibernate逆向生成映射文件.hbn.xml中文乱码
- 关于代码布局时,声明时的weak、strong修饰符
- php中提示Fatal error: require(),“include_path=’.;c:\php5\pear’”错误的解决方法
- linux基础3.11shell脚本1
- ./tools/mkimage: invalid entry point -n