《spring源码深度解析》spring BeanDefinition解析(XmlBeanDefinitionReader)

spring从xml中解析及注册BeanDefinition的过程主要由XmlBeanDefinitionReader主导,其相当于一个组织者的角色,将解析的工作委托给BeanDefinitionDocumentReader,注册工作则分配给BeanDefinitionRegistry

在真正开始BeanDefinition解析前,它将自己以及ResourceReaderEventListener等接口打包成XmlReaderContext,然后交给BeanDefinitionDocumentReader,以便在解析过程中可以回调ReaderEventListener中的事件接口。

在完成BeanDefinition解析时,会调用BeanDefinitionRegistry进行注册,实际上当所有BeanDefinition注册完成时,它的使命也就结束了,剩下事情的就交给BeanFactory了。

根据上面的理解,我们大概可以画出它们之间的UML关系:


Tomcat Http与Servlet

Tomcat本质是一个servlet容器,servlet是java用来规范网络请求处理一套接口规范,其中,在javax.servlet中定义了所有的servlet类都必须实现的接口,在javax.servlet.http中则定义了采用HTTP协议的HttpServlet。而Tomcat主要就是用来作为处理Http请求的servlet服务的容器,因此,在系统梳理Tomcat之前,有必要先了解下Http与servlet规范。

《深入理解Java虚拟机》Java线程与锁优化

线程是比进程更轻量级的调度执行单位,线程的引入可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存资源、文件I/O等),又可以独立调度。

Java提供了在不同硬件和操作系统平台下对线程操作的统一处理,每个已经执行start()且还未结束的java.lang.Thread实例就代表了一个线程。