ToB企服应用市场:ToB评测及商务社交产业平台

标题: 10、Spring之AOP概述 [打印本页]

作者: 篮之新喜    时间: 2023-8-10 01:57
标题: 10、Spring之AOP概述
10.1、概念

10.2、术语

10.2.1、横切关注点

横切关注点是从目标方法中抽取出来的非核心业务代码,一个目标方法中可以有多个横切关注点
  1.     public int add(int i, int j) {
  2.         //输出日志属于非核心业务,这是该目标方法的第1个横切关注点
  3.         System.out.println("[日志] add 方法开始了,参数是:" + i + "," + j);
  4.         int result = i + j;
  5.         System.out.println("方法内部 result = " + result);
  6.         //输出日志属于非核心业务,这是该目标方法的第2个横切关注点
  7.         System.out.println("[日志] add 方法结束了,结果是:" + result);
  8.         return result;
  9.     }
复制代码
10.2.2、通知

非核心业务代码在目标方法中叫横切关注点,其被抽取封装到一个类(切面类)的方法中,这样的方法就是通知方法
通知方法一共有五种类型:

  1.             public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  2.                 Object result = null;
  3.                 try {
  4.                     //前置通知增强位置:在调用目标对象执行功能之前,加入额外的操作
  5.                     System.out.println("[日志] "+method.getName()+" 方法开始了,参数是:" + Arrays.toString(args));
  6.                     //调用目标对象实现的核心逻辑
  7.                     result = method.invoke(target, args);
  8.                     //返回通知增强位置:在调用目标对象执行功能之后,加入额外的操作)
  9.                     System.out.println("[日志] "+method.getName()+" 方法结束了,结果是:" + result);
  10.                 } catch (Exception e) {
  11.                     //异常通知增强位置:在调用目标对象执行功能发生异常时,加入额外的操作
  12.                     System.out.println("[日志] "+method.getName()+",异常:"+e.getMessage());
  13.                 }  finally {
  14.                     //后置通知增强位置:在调用目标对象执行功能完毕时,加入额外的操作
  15.                     System.out.println("[日志] "+method.getName()+",方法执行完毕");
  16.                 }
  17.                 //保证代理对象和目标对象的返回值一致
  18.                 return result;
  19.             }
复制代码
10.2.3、切面

切面是封装通知方法(横切关注点)的类,也叫切面类
10.2.4、目标

目标是被代理的(目标)对象,也就是要进行功能增强的对象,也可以说是要被抽取非核心业务代码的对象
10.2.5、代理

代理是对目标对象进行功能增强的(代理)对象,这个(代理)对象会由AOP通过代理模式自动创建
10.2.6、连接点

连接点是抽取横切关注点的位置
10.2.7、切入点

切入点是一个表达式,可以定位出连接点,从而实现把切面类中的通知方法安插到该位置
10.3、作用


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4