AOP概念和7个专业术语

我眼中的AOP

  初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和我说aop多难多难。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许  许多多这样的名词,都是万变不离其宗而已。

AOP概念

  AOP(Aspect Oriented Programming),即面向切面编程(也叫面向方面编程,面向方法编程)。其主要作用是,在不修改源代码的情况下给某个或者一组操作添加额外的功能。像日志记录,事务处理,权限控制等功能,都可以用AOP来“优雅”地实现,使这些额外功能  和真正的业务逻辑分离开来,软件的结构将更加清晰。AOP是OOP的一个强有力的补充。

AOP的7个专业术语
  1.增强(Advice)
    增强就很好理解了,AOP(切面编程)是用来给某一类特殊的连接点,添加一些特殊的功能,那么我们添加的功能也就是增强啦~
    比如:添加日志、管理事务。
    不过增强不仅仅包含需要增加的功能代码而已,它还包含了方位信息。
    那什么是方位信息呢?
    方位信息就是相对于方法的位置信息,如:方法前、方法后、方法环绕
    为什么要方位信息呢?切点不是确定了需要增强的位置了吗?
    切点定位的是“在什么类的什么方法上”,也就是说,切点只是定位到了方法本身(也叫执行点,特殊的连接点),但是我们增强的内容是放在该方法的前面呢、后面呢?还是前后都要呢?这些切点却没有告诉我们,那么我们该如何确定具体位置呢?
    所以,我们才需要用到方位信息,进一步的定位到具体的增强代码放置的位置。
    咦?增强即包含了【功能】又包含了【方位】,那我是不是不用切点就可以匹配哪些方法,并添加功能了呢?
    恩,确实如此,因为通过方位信息,虽然只是简单的描述了【功能】需要放在方法前、后、还是前后都要等信息,但是我们还是可以通过方位定位到位置。只不过,是匹配到所有类的所有方法!因为方位只是说明在方法前还是方法后,并没有要求是哪些类?哪    些方法? — So,我们可以直接使用增强来生成一个切面,而不需要切点,但这并不怎么推荐,因为它是匹配所有方法的。所以,我们才需要用切点来进一步确认位置。
  2.切点(Pointcut)
    一个项目中有很多的类,一个类有很多个连接点,当我们需要在某个方法前插入一段增强(advice)代码时,我们就需要使用切点信息来确定,要在哪些连接点上添加增强。
    那么切点是什么?
    如果把连接点当做数据库中的记录,那么切点就是查找该记录的查询条件。
    所以,一般我们要实现一个切点时,那么我们需要判断哪些连接点是符合我们的条件的,如:方法名是否匹配、类是否是某个类、以及子类等。
  3.连接点(Joinpoint)
    连接点就是程序执行的某个特定的位置,如:类开始初始化前、类初始化后、类的某个方法调用前、类的某个方法调用后、方法抛出异常后等。Spring 只支持类的方法前、后、抛出异常后的连接点。
  4.切面(Aspect)
    切面由切点和增强(或引介)组成,或者只由增强(或引介)实现。
  5.目标对象(Target)
    目标对象就是我们需要对它进行增强的业务类~
    如果没有AOP,那么该业务类就得自己实现需要的功能。
  6.AOP代理(AOP proxy)
    一个类被AOP织入后生成出了一个结果类,它是融合了原类和增强逻辑的代理类。
  7.织入(Weaving)
    织入就是将增强添加到目标类具体连接点上的过程。
         编译期织入,这要求使用特殊java编译器
    类装载期织入,这要求使用特殊的类装载器
    动态代理织入,在运行期为目标类添加增强生成子类的方式
    Spring采用的是动态代理织入,而AspectJ采用编译期织入和类装载期织入。

转载于:https://www.cnblogs.com/GIRLANDBOYS/p/7637673.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值