美文网首页
spring aop的理解

spring aop的理解

作者: ZMRWEGo | 来源:发表于2019-05-28 09:54 被阅读0次

一、aop的两大主要组件

  1. pointcut
    pointcut即切点,决定对哪些方法进行增强
  2. advice
    advice即通知,说明在切点处具体的动作,包括beforeAdvice、afterAdvice以及throwingAdvice。
    还有一个就是advisor,通知器。它包括了切点和通知。

二、spring如何实现切面编程的?

在获取bean的时候,我们调用的是ProxyFactoryBean的getBean方法,spring在这个方法中封装了原对象的代理。
生成代理对象的方法主要有两种,一种是jdk动态代理另外一种就是cglib。

那么生成了代理对象之后如何进行拦截呢,针对于jdk动态代理和cglib我们分别进行分析:

  1. jdk动态代理
    生成代理对象传入的参数:
Proxy.newProxyInstance(classLoader,interface,InvocationHandler)

当代理对象的方法被调用时,InvocationHandler的invoke方法作为回调函数被触发,在这个函数中完成对目标方法的调用增强
这里目标方法的调用是通过反射来实现的,增强即通过一系列拦截器实现的。
2.cglib
cglib与jdk基本相似,只不过它对目标方法的增强使用的是代理对象来完成的。而不是通过反射来完成的。

相关文章

网友评论

      本文标题:spring aop的理解

      本文链接:https://www.haomeiwen.com/subject/jyfrtctx.html