zoukankan      html  css  js  c++  java
  • Spring AOP 随记

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

    所以为了更加深入理解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): 

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

  • 相关阅读:
    5月读书日志
    把代码搬到Git Hub 吧(一)
    RTX二次开发(二)(基于ASP.NET)
    RTX二次开发(一)(基于ASP.NET)
    文件夹下迭代查询文件
    JS URL传递中文参数时出现乱码的处理
    js实现上下滑动侧边栏
    基本select语句的生命周期
    NodeJs下的测试框架Mocha
    带新人感想
  • 原文地址:https://www.cnblogs.com/iCanhua/p/8673516.html
Copyright © 2011-2022 走看看