首页 > 编程语言 > 详细

Spring入门配置(二) - AOP

时间:2019-07-11 11:02:56      阅读:87      评论:0      收藏:0      [点我收藏+]

一、AOP简介

  AOP:Aspect Oriented Programming,面向切面编程,通过预编译方式和动态代理实现程序功能的统一维护的一种技术。利用AOP对业务逻辑各个部分进行抽取隔离,从而使逻辑各部分间的耦合度降低,提高程序的可重用性,提高开发效率。

  1. JDK动态代理和Cglib动态代理

    • JDK动态代理(基于接口)
      Target target = new Target(); //创建目标对象
      //创建代理对象,Target implements TargetInterface TargetInterface proxy = (TargetInterface) Proxy.newProxyInstance(target.getClass().getClassLoader(),
        target.getClass().getInterfaces(),new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("前置增强代码..."); Object invoke = method.invoke(target, args);//反射方法对象,即要执行的目标对象 System.out.println("后置增强代码..."); return invoke; } });
    • Cglib动态代理(基于父类)
      Target target = new Target(); //创建目标对象
      Enhancer enhancer = new Enhancer();   //创建增强器
      enhancer.setSuperclass(Target.class); //设置父类
      enhancer.setCallback(new MethodInterceptor() { //设置回调
          @Override
          public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
          System.out.println("前置代码增强....");
          Object invoke = method.invoke(target, objects);
          System.out.println("后置代码增强....");
          return invoke;
          }
      });
      Target proxy = (Target) enhancer.create(); //创建代理对象
  2.  AOP相关术语

    Target(目标对象)

    代理的目标对象

    Proxy (代理) 一个类被 AOP 织入增强后,就产生一个结果代理类
    Joinpoint(连接点) 那些可以被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点
    Pointcut(切入点) 对哪些 Joinpoint 进行拦截的定义
    Advice(通知/ 增强) 拦截到 Joinpoint 之后所要做的事情就是通知

    Aspect(切面)

    是切入点和通知(引介)的结合
    Weaving(织入) 把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入

 

 

 

 

 

二、基于XML的AOP开发

   

Spring入门配置(二) - AOP

原文:https://www.cnblogs.com/dwyer/p/11167718.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!