
Spring AOP源码分析
乒乓狂魔
这个作者很懒,什么都没留下…
展开
-
Spring AOP源码分析(一)AOP介绍和aspectj、SpringAOP入门
[size=medium]首先说说三个名词,面向对象、面向接口编程、面向切面编程(Aspect Oriented Programming 即AOP)。 针对java来说 面向对象:是对现实世界的描述,是后两者的基础,大前提。 面向接口编程:接口就是一组规则的集合,这组规则可以有不同的实现方式。如JDBC,它本身仅仅是接口规范,不同的数据库有不同的实现,我们通过JDBC这样的接口编程,就无需关...原创 2014-09-14 10:10:56 · 212 阅读 · 0 评论 -
Spring AOP源码分析(二)JDK动态代理和CGLIB介绍
[size=medium]本篇是介绍java实现代理对象的两种方法,JDK动态代理和CGLIB。 JDK动态代理:针对你所调用的方法是接口所定义的方法。动态的创建一个类,通过实现目标类的接口来实现代理。 CGLIB:没有限制。通过继承目标类来创建代理类,实现代理。 下面看案例: 案例一,JDK动态代理: Person和Animals都实现了Say接口sayHello方法。现在就需要对...原创 2014-09-21 07:07:18 · 181 阅读 · 0 评论 -
Spring AOP源码分析(三)Spring AOP中的一些基本接口及其概念
[size=medium]本文章对一些SpringAOP的接口设计进行下介绍,主要是区分三者的关系,AOP联盟、Aspectj、SpringAOP所做的工作。 主要内容: (1)Advice接口设计 (2)MethodInterceptor接口设计 (3)Advisor和Pointcut接口设计 第一个:Advice接口设计 Advice:AOP联盟定义的通知接口,即拦截到相应的方法后...原创 2014-09-22 07:40:20 · 222 阅读 · 0 评论 -
Spring AOP源码分析(四)Spring AOP的JDK动态代理
[size=medium]本篇文章将会介绍上一个例子中的源码执行情况,从中熟悉整个SpringAOP的一些概念和接口设计。 首先整个SpringAOP的分两大过程。 第一个过程:根据xml文件或者注解中配置的拦截信息,生成相应的代理对象,这个代理对象包含了对应的拦截器。 第二个过程:执行所拦截的方法时,就是调用代理对象的执行逻辑,完成各种拦截。 本文章先对第二个过程进行源码解析。 ...原创 2014-09-22 07:40:46 · 442 阅读 · 0 评论 -
Spring AOP源码分析(五)Spring AOP的Cglib代理
[size=medium]上一篇文章介绍了Spring AOP的JDK动态代理的过程,这一篇文章就要介绍下Spring AOP的Cglib代理过程,仍然是使用上一篇文章的工程案例。 JDK动态代理是由JdkDynamicAopProxy来生成代理对象的,Cglib则是由CglibAopProxy来生成代理对象的。JdkDynamicAopProxy、CglibAopProxy实现了AopPr...原创 2014-09-24 06:48:29 · 313 阅读 · 0 评论 -
Spring AOP源码分析(六)Spring AOP配置的背后
[size=medium]本篇文章主要对Spring AOP配置背后进行了哪些事情做下说明。还是如上类似的工程,在xml中AOP拦截配置如下:[/size] [code="java"] ...原创 2014-09-27 11:39:16 · 267 阅读 · 0 评论 -
Spring AOP源码分析(七)ProxyFactoryBean介绍
[size=medium]这篇文章里面就要说说Spring自己的AOP,搞清楚哪种方式是Spring自己实现的AOP,哪种方式是Spring引入aspectj的AOP。 Spring自己的AOP实现在于ProxyFactoryBean。先看下使用案例(仍和之前的案例是一样的):接口AService、实现类AServiceImpl、通知MyBeforeAdvice[/size] [code="j...原创 2014-09-28 22:03:56 · 237 阅读 · 0 评论 -
Spring AOP源码分析(八)SpringAOP要注意的地方
[size=medium]SpringAOP要注意的地方有很多,下面就举一个,之后想到了再列出来: (1)SpringAOP对于最外层的函数只拦截public方法,不拦截protected和private方法,另外不会对最外层的public方法内部调用的其他方法也进行拦截,即只停留于代理对象所调用的方法。如下案例: B类有两个public方法,foo1()和foo2(),foo1内部调用了fo...原创 2014-10-01 10:00:49 · 238 阅读 · 0 评论