博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring AOP 随记
阅读量:4621 次
发布时间:2019-06-09

本文共 1159 字,大约阅读时间需要 3 分钟。

  本周经历各种面试失败后,最后一站张建飞老大的阿里,感觉有着这般年纪不该有的垃圾履历而忧伤中,不过还是要继续加油的,毕竟他说的好,都是经历,无愧初心。

所以为了更加深入理解Spring AOP我又翻起了我17买的那本Spring4出来看了。面试被问到起嘛我基础还是有的对吧。

  AOP和OOP:

  编程范式,我们都知道有些面函数式编程,面向对象编程,而面向切面编程其实也就同他们差不多,所以面试官问的时候第一件事就是介绍AOP是什么吧,我觉得这样说是最好的,它就是一种编程范式而已!而函数哲学很多,比喻什么副作用啊,面向映射,而面向命令编程就侧重于解决问题步骤等等;大家最熟悉的应该就是面向对象编程,一针到底就是:面向对象编程等都是解决业务逻辑,是垂直领域的问题,而面向切面编程,就是解决横切的问题。我解析不清楚,但面试问了我暂时只会答这些。

   连接点(JoinPoint):

  其实Spring的AOP也就两种实现方式,一个是JDK的动态代理技术,另一种就是CGLibs,JDK动态代理只带在方法级别前后进行横切,当然还有异常抛出,而且必须是要求被代理的类是实现了借口的,因为JDK动态代理技术的硬性要求,必须需要接口为参数生成代理类,主要用到两个类,一个是InvocationHandler接口,一个是Proxy类,具体我后面贴出;另外一个就是CGLibs的字节码生成技术了,这个可以在类级别进行子类生产产生动态代理的方式;因此这个方法不能用在final类上。那么这个和连接点有什么关系呢?连接点由两个信息确定,一是用方法表示的程序执行点,二是用相对位置所表示的方位,而任何被感兴趣的连接点就是切点。

  切点(Point Cut):

  连接点这个概念告诉了我们一个类中可以被横切的候选点,而切点,就是我们某个横切逻辑需要、或者说感兴趣的点了;书中提到,用数据库记录比喻连接点,而用SQL语句表示切点最好了;因为切点,而挑选出了合适的连接点。

  增强(Advice):

  使用增强类定义横切逻辑,同时由于Spring只支持方法连接点,增强类还包括在方法的哪一点加入横切代码的方位信息,所以增强既包含横切逻辑,又包含部分连接点信息。其中增强类型就可以概括为:前置增强、后置增强、环绕增强、异常增强、引介增强。

  切面(Aspect):

  类是对物体特征的抽象,切面就是对横切关注点的抽象,由切点和增强组成

  织入(Weave):

  将切面应用到目标对象并导致代理对象创建的过程

  引介(introduction): 

  在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段

转载于:https://www.cnblogs.com/iCanhua/p/8673516.html

你可能感兴趣的文章
Hello,Android
查看>>
Sublime Text 3 build 3103 注册码
查看>>
删与改
查看>>
SAP 中如何寻找增强
查看>>
spi驱动无法建立spidev问题
查看>>
ANDROID开发之SQLite详解
查看>>
如何依靠代码提高网络性能
查看>>
Fedora 17 无线网卡配置笔记
查看>>
[HNOI 2001]求正整数
查看>>
plsql出现录相机后卡屏解决方法
查看>>
HDU 1004 Let the Balloon Rise
查看>>
Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses
查看>>
numpy.random.shuffle()与numpy.random.permutation()的区别
查看>>
Zookeeper要安装在奇数个节点,但是为什么?
查看>>
discuz 微社区安装记录
查看>>
[BZOJ4824][Cqoi2017]老C的键盘 树形dp+组合数
查看>>
配置的热更新
查看>>
MySQL事务的开启与提交,autocommit自动提交功能
查看>>
PriorityQueue
查看>>
CODEVS1403 新三国争霸
查看>>