《spring源码深度解析》spring BeanDefinition解析(自定义标签)
上一篇梳理了XmlBeanDefinitionReader
解析注册BeanDefinition
的过程,但主要是针对默认标签的解析,这里主要介绍下其对于自定义标签的解析策略。
上一篇梳理了XmlBeanDefinitionReader
解析注册BeanDefinition
的过程,但主要是针对默认标签的解析,这里主要介绍下其对于自定义标签的解析策略。
spring从xml中解析及注册BeanDefinition
的过程主要由XmlBeanDefinitionReader
主导,其相当于一个组织者的角色,将解析的工作委托给BeanDefinitionDocumentReader
,注册工作则分配给BeanDefinitionRegistry
。
在真正开始BeanDefinition
解析前,它将自己以及Resource
,ReaderEventListener
等接口打包成XmlReaderContext
,然后交给BeanDefinitionDocumentReader
,以便在解析过程中可以回调ReaderEventListener
中的事件接口。
在完成BeanDefinition
解析时,会调用BeanDefinitionRegistry
进行注册,实际上当所有BeanDefinition
注册完成时,它的使命也就结束了,剩下事情的就交给BeanFactory
了。
根据上面的理解,我们大概可以画出它们之间的UML关系:
Tomcat本质是一个servlet容器,servlet是java用来规范网络请求处理一套接口规范,其中,在javax.servlet
中定义了所有的servlet类都必须实现的接口,在javax.servlet.http
中则定义了采用HTTP协议的HttpServlet
。而Tomcat主要就是用来作为处理Http请求的servlet服务的容器,因此,在系统梳理Tomcat之前,有必要先了解下Http与servlet规范。
线程是比进程更轻量级的调度执行单位,线程的引入可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存资源、文件I/O等),又可以独立调度。
Java提供了在不同硬件和操作系统平台下对线程操作的统一处理,每个已经执行start()
且还未结束的java.lang.Thread
实例就代表了一个线程。