Spring FrameWork 源码分析
文章平均质量分 71
特殊人类鉴定完毕
一起进入代码的世界
展开
-
IOC容器的设计
IOC容器的设计UML:从接口BeanFactory到HierarchicalBeanFactory,再到ConfigurableBeanFactory,是一条主要的beanFactory的设计路径。其中,BeanFactory接口定义了基本的IOC容器的规范。在这个接口定义中,包含了getBean()这样的IOC容器的基本方法。而HierarchicalBeanFactory接口继承了BeanF...翻译 2018-06-11 12:28:52 · 446 阅读 · 0 评论 -
MVC处理HTTP分发请求
本节一起学习MVC处理HTTP分发请求翻译 2018-06-18 14:52:12 · 1280 阅读 · 0 评论 -
DispatcherServlet的启动和初始化
本节一起学习DispatcherServlet的启动和初始化前面已经分析了Spring MVC的工作,下面就DispatcherServlet的启动和初始化进行详细的分析作为Servlet,DispatcherServlet的启动和Servlet的启动过程是相关联的,在Servlet的初始化过程中,Servlet的init会被调用,进行初始化。下面看一下DispatcherServlet的基类Ht...翻译 2018-06-17 12:56:04 · 889 阅读 · 0 评论 -
Spring MVC设计概览
Spring的上下文体系通过ContextLoader和DispatcherServlet建立并初始化的过程。在完成对ContextLoaderListener的初始化之后,Web容器开始初始化DispatcherServlet,这个初始化的启动与在web.xml中载入次序的定义有关。DispatcherServlet会建立自己的上下文来持有Spring MVC的Bean对象,在建立自己持有的IO...翻译 2018-06-17 12:16:03 · 173 阅读 · 0 评论 -
IOC容器启动的基本过程
本节一起学习IOC容器的启动过程IOC容器的启动过程就是建立上下文的过程。该上下文是与ServletContext相伴而生的,同时也是IOC容器在web环境中的具体表现之一。由ContextLoaderListener启动的上下文为跟上下文。在根上下文的基础上,还有一个与Web MVC 相关的上下文用来保存控制器DispatcherServlet需要的MVC对象。在web容器中启动Spring 应...翻译 2018-06-16 22:39:02 · 2389 阅读 · 0 评论 -
Spring AOP拦截器调用的实现
本节一起学习Spring AOP拦截器调用的实现在Spring AOP通过JDK的代理方式或者CGLIB方式生成代理对象的时候,相关的拦截器已经配置到代理对象中了,拦截器在代理对象中起作用是通过对这些方法的回调完成的。如果是JDK的Proxy生成代理对象,那么需要通过InvocationHandler来设置拦截器回调,如果是使用CGLIB,则通过DynamicAdvisedInterceptor完...翻译 2018-06-15 18:31:07 · 1105 阅读 · 0 评论 -
建立AopProxy代理对象
本节学习建立AopProxy代理对象在Spring的AOP模块中,一个主要的部分就是代理对象的生成,而对于Spring的应用,可以看到,是通过配置和调用Spring的ProxyFactoryBean来完成这个任务的。在ProxyFactoryBean中,封装了主要代理对象的生成过程。在这个生成过程中,可以使用JDk的Proxy和CGLIB两种生成方式。ProxyConfig提供了配置属性;Advi...翻译 2018-06-15 15:29:58 · 295 阅读 · 0 评论 -
Spring AOP的设计与实现
本节一起学习Spring AOP的设计与实现具体来说,在Spring AOP实现中,使用的核心技术是动态代理,而这种动态代理实际上是JDK的一个特性。通过JDK的动态代理特性,可以为任意JAVA对象创建代理对象,具体使用时通过java Reflection API来完成的。Spring AOP的核心结束是JDK动态代理技术。以动态代理技术设计出了一系列AOP的横切实现,比如前置通知、返回通知、异常...翻译 2018-06-15 11:59:37 · 185 阅读 · 0 评论 -
Spring AOP概述
本节回顾一下AOP的概念AOP是面向切面的编程思想,百科的概述为:Aspect是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点。从关注点中分离出横切关注点是面向切面的程序设计的核心概念。分离关注点是解决特定领域问题的代码从业务逻辑中独立出来,业务逻辑的代码不再含有针对特定领域问题代码的调用,业务逻辑同特定领域问题的关系通过切面来封装、维护,这样原本分散在整个应用程序的变动就可以很好...翻译 2018-06-15 11:45:04 · 145 阅读 · 0 评论 -
Bean对IOC容器的感知
本节主要学习Bean对IOC容器的感知容器管理的Bean一般不需要了解容器的状态和直接使用容器,但在某些情况下,需要在Bean中直接对IOC容器进行操作,这时候就需要在Bean中设定对容器的感知。Spring IOC容器也提供了该功能,它是通过特定的aware接口完成的。aware接口有以下这些:BeanNameAware ,可以在Bean中得到它在IOC容器中的Bean实例名称BeanFacto...翻译 2018-06-13 18:47:04 · 161 阅读 · 0 评论 -
ApplicationContext和Bean的初始化和销毁
本节来学习ApplicationContext和Bean的初始化和销毁首先看一下ApplicationContext容器的初始化和销毁关闭过程。ApplicationContext启动的过程是在AbstractApplicationContext实现的。在使用应用上下文时需要做一些准备工作,这些准备工作在prepareBeanFactory方法中实现。这个方法为容器配置了ClassLoader、P...翻译 2018-06-13 13:10:32 · 4323 阅读 · 0 评论 -
IOC容器的依赖注入
本节来学习IOC容器的依赖注入假设IOC容器已经载入了用户定义的Bean信息,开始分析依赖注入的原理。首先,依赖注入的过程是用户第一次向IOC容器索要Bean时触发的,当然也可以在BeanDefinition信息中通过控制lazy-init属性来让容器完成对Bean的预实例化。下面从DefaultListableBeanFactory的基类AbstractBeanFactory入手看一下getBe...翻译 2018-06-13 11:47:13 · 188 阅读 · 0 评论 -
IOC容器的初始化过程
本节来学习IOC容器的初始化过程IOC容器的初始化由refresh()方法启动的,具体包含BeanDefinition的Resource定位、载入和注册三个过程。第一个过程是Resource定位过程。Resource定位指的是BeanDefinition的资源定位,由ResourceLoader通过统一的Resource接口来完成。第二个过程是BeanDefinition的载入。这个载入过程是把用...翻译 2018-06-11 21:38:33 · 420 阅读 · 0 评论 -
Spring MVC 视图的呈现
前面讲解到DispatcherServlet的doDispatch过程,对视图的呈现处理是在processDispatchResult方法中完成的 private void processDispatchResult(HttpServletRequest request, HttpServletResponse response, @Nullable HandlerExecutionChai...翻译 2018-06-18 15:28:39 · 314 阅读 · 0 评论