深入浅出Spring
文章平均质量分 87
我计划最近把以前学习的Spring再次系统的整理一遍,以便加强记忆和理解,特在这里整理一个专栏,供大家共同学习。
孙悟空2015
追根溯底,回归本质,挖掘兴趣,激发思考。
展开
-
Spring技术内幕:Spring AOP的实现原理(五)
7、Advice通知的实现 AopProxy代理对象生成时,其拦截器也一并生成。下面我们来分析下Aop是如何对目标对象进行增强的。在为AopProxy配置拦截器的实现中,有一个取得拦截器配置过程,这个过程由DefaultAvisorChainFactory实现的,而这个工厂类负责生成拦截器链,在它的getInterceptorsAndDynamicInterceptionA- dvice方法中,原创 2015-07-06 20:49:34 · 1580 阅读 · 0 评论 -
Spring技术内幕:Spring AOP的实现原理(四)
4、目标方法的调用 如果没有拦截器会对目标对象方法直接调用。对于JDKDynamicAopProxy代理对象是通过AopUtils使用反射机制实现的。在这个调用方法中首先得到调用方法的反射对象,然后使用invoke启动对方法反射对象的调用。源码如下: /** * Invoke the given target via reflection, as part of an AOP me原创 2015-07-04 23:53:13 · 1670 阅读 · 0 评论 -
Spring技术内幕:Spring AOP的实现原理(三)
生成SingleTon代理对象在getSingleTonInstance方法中完成,这个方法时ProxyFactoryBean生成AopProxy对象的入口。代理对象会封装对target目标对象的调用,也就是说针对target对象的方法调用行为会被这里生成的代理对象所拦截。具体的生成过程是首先读取ProxyFactoryBean配置,为生成代理对象做好准备。Spring通过AopProxy类来具体生原创 2015-06-27 16:18:10 · 1428 阅读 · 1 评论 -
Spring技术内幕:Spring AOP的实现原理(二)
**二、AOP的设计与实现 1、JVM的动态代理特性** 在Spring AOP实现中, 使用的核心技术时动态代理,而这种动态代理实际上是JDK的一个特性。通过JDK的动态代理特性,可以为任意Java对象创建代理对象,对于具体使用来说,这个特性使通过Java Reflection API来完成的。在此之前先简要复习一下Proxy模式,其静态类图如下: 我们可以看到有一个RealSubjec原创 2015-06-24 21:14:58 · 1396 阅读 · 0 评论 -
Spring技术内幕:Spring AOP的实现原理(一)
一、SpringAOP的概述 1、AOP概念 AOP是Aspect-Oriented Programming(面向切面编程)的简称。维基百科的解释如下: Aspect是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点(crosscutting concern)。从关注点中分离出横切关注点是面向切面的程序设计的核心。分离关注点使解决特定领域问题的代码从业务逻辑代码中独立出来,业务逻原创 2015-06-23 16:09:07 · 4972 阅读 · 2 评论 -
Spring技术内幕:SpringIOC原理学习总结
前一段时候我把Spring技术内幕的关于IOC原理一章看完,感觉代码太多,不好掌握,我特意又各方搜集了一些关于IOC原理的资料,特加深一下印象,以便真正掌握IOC的原理。 IOC的思想是:Spring容器来实现这些相互依赖对象的创建、协调工作。对象只需要关系业务逻辑本身就可以了。 SpringIOC容器的执行步骤是: 1、资源定位,即首先要找到applicationContext.xml文件原创 2015-06-23 09:59:08 · 2504 阅读 · 2 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(五)(大结局)
这里通过使用BeanDefinitionResolver来对BeanDefinition进行解析,然后注入到property中。下面到BeanDefinitionValueResolver中看一下解析过程,以对Bean reference进行解析为例 /** * Resolve a reference to another bean in the factory. * cl原创 2015-06-19 11:36:12 · 1732 阅读 · 0 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(四)
前面分析了BeanDefinition在IOC容器中的载入和解析过程。在这些动作完成以后,用户定义的BeanDefinition信息已经在容器内建立起了自己的数据结构以及相应的数据表示,但此时这些数据不能供IOC容器直接使用,需要在IOC容器中对这些BeanDefinition数据进行注册。这个注册为IOC容器提供了更友好的使用方式,在DefaultListableBeanFactory中,是通过H原创 2015-06-18 21:06:10 · 1103 阅读 · 0 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(三)
接上一篇的时序图。这里调用的loadBeanDefintions实际上是一个抽象方法,那么实际载入过程发生在哪里呢?在loadBeanDefintions中,初始化了读取器XMLBeanDefinitionReader,然后把这个读取器在IOC容器中设置好(过程和编程式使用XMLBeanFactory是类似的),最后是启动读取器来完成BeanDefinition在IOC容器中的载入,代码如下:/**原创 2015-06-17 21:04:39 · 1134 阅读 · 0 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(二)
三、IOC容器的初始化过程 IOC容器的初始化时由前面介绍的refresh方法来启动的,这个方法标志着IOC容器的正式启动。这个启动包括BeanDefinition的Resource定位、载入和注册。下面我们将详细分析这三个实现过程,Spring把这三个过程分开,并使用不同的模块来完成,通过这样的设计让用户更加灵活的这三个过程进行剪裁和扩展,定义出最适合自己的IOC容器的初始化过程。 第一个过程原创 2015-06-16 20:33:32 · 1516 阅读 · 0 评论 -
Spring技术内幕——Spring Framework的IOC容器实现(一)
一、SpringIOC容器概述 IOC容器和依赖反转的模式 在面向对象的系统中,对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上。这些依赖关系可以通过把对象的依赖注入交给框架IOC容器来完成。他可以再解耦代码的同时提高了代码的可测试性。 依赖控制反转的实现由很多种方式,在Spring中,IOC容器是实现这个模式的载体,他可以再对象生成或者初始化时直接将数据注入到对象中原创 2015-06-15 21:18:03 · 2091 阅读 · 0 评论 -
Spring技术内幕——Spring的设计理念和整体架构
横看成岭侧成峰,远近高低各不同。 不识庐山真面目,只缘身在此山中。 ——苏轼 Spring的各个子项目 1、Spring Framework(Core):Spring项目的核心。包含了一系列IOC容器的设计,提供了反转模式的实现,同时还集成了AOP功能。另外,在Spring Framework中,还包含了其他Spring的基本模块,比如MVC、JDBC、事务处理模块的实现。 2、Spring原创 2015-06-11 20:36:46 · 2031 阅读 · 0 评论