随笔分类 - spring-aop源码系列
摘要:写在前面 在之前的文章中有写到,Spring在配置中,会存在大量的切面配置。然而在很多情况下,SpringAOP 所提供的切面类真的不是很够用,比如想拦截制定的注解方法,我们就必须扩展DefalutPointAdviso类,自定义一个切面类,然后在Spring配置文件中进行切面的配置。 (Sprin
阅读全文
摘要:写在前面 Spring将introduction通知看作一种特殊类型的拦截通知。用Spring的行话来讲,对方法的增强叫做Wearing(织入),而对类的增强叫introduction(引入)。Introduction Advice(引入增强)就是对类的功能增强,它也是Spring AOP 提供的一
阅读全文
摘要:写在前面 optimize是ProxyConfig的属性。意思为 是否对生产代理策略使用优化。 一个例子 Spring AOP 提供一个可根据Bean名称来自动生产代理的工具,它就是BeanNameAutoProxyCreator。它的配置是这样: 以上使用BeanNameAutoProxyCrea
阅读全文
摘要:写在前面 expose-proxy。为是否暴露当前代理对象为ThreadLocal模式。 SpringAOP对于最外层的函数只拦截public方法,不拦截protected和private方法(后续讲解),另外不会对最外层的public方法内部调用的其他方法也进行拦截,即只停留于代理对象所调用的方法
阅读全文
摘要:写在前面 这篇文章里面就要说说Spring自己的AOP,搞清楚哪种方式是Spring自己实现的AOP,哪种方式是Spring引入aspectj的AOP。 简单例子 Spring自己的AOP实现在于ProxyFactoryBean。先看下使用案例(仍和之前的案例是一样的):接口AService、实现类
阅读全文
摘要:写在前面 Spring AOP中Pointcut,dvice 和 Advisor三个概念 1)切入点 Pointcut 在介绍Pointcut之前,有必要先介绍 Join Point(连接点)概念。 连接点:程序运行中的某个阶段点,比如方法的调用、异常的抛出等。比如方法doSome();Pointc
阅读全文
摘要:写在前面 前面介绍了Spring AOP的JDK动态代理的过程,这一篇文章就要介绍下Spring AOP的Cglib代理过程。 CGLib全称为Code Generation Library,是一个强大的高性能,高质量的代码生成类库,可以在运行期扩展Java类与实现Java接口,CGLib封装了as
阅读全文
摘要:写在前面 时间断断续续,这次写一点关于spring aop拦截器链的记载。至于如何获取spring的拦截器,前一篇博客已经写的很清楚(spring aop(2) Spring AOP的JDK动态代理) 获取拦截器链 ReflectiveMethodInvocation 的结构 看一个 MethodI
阅读全文
摘要:写在前面 spring 事务是springAOP 的一个实现。我们以分析spring的事务,来分析spring的AOP实现。 基本知识 如果目标方法被spring的事务声明,则执行该目标方法的对象就会是spring动态生成的代理对象。如果目标方法的类有接口实现,那么产生的是jdk的动态代理,反之则是
阅读全文
摘要:写在前面 由于spring的事务系列,可以带出spring的aop。spring的事务只是spring的一个具体实现 名词解释 常见的aop AspectJ 、JBossAOP、SpringAOP aspectj和jboss AOP对于上述约定进行了具体的实现,独立与其他 Spring Aop:Sp
阅读全文