概念:
1 什么是aop及实现方式
2 aop的基本概念
3 spring中的aop
1 什么是aop及实现方式
1.1 aop,面向切面编程,比如:唐僧取经需要经过81难,多一难少一难都不行。孙悟空要经过27难,唐僧27难,猪八戒9难,沙僧18难。每个人统计自己的难数。这样造成业务冗杂,现在把统计经过的劫难数交给观音,唐僧只用骑马,悟空只用降妖除魔,八戒只用吃,沙僧只用担行李就行了。
实际应用中只是把统计劫难数换成了事务服务,日志管理,安全验证等。
1.2 实现方式有预编译或者运行期动态代理
预编译:aspectj
运行期动态代理:(JDK代理,CGLib动态代理)
Springaop、JbossAop
2 aop的基本概念
基本术语(一些名词):
(1)切面(Aspect)
切面泛指[*交叉业务逻辑*]。事务处理和日志处理可以理解为切面。常用的切面有通知(Advice)与顾问(Advisor)。实际就是对主业务逻辑的一种增强。
(2)织入(Weaving)
织入是指将切面代码插入到目标对象的过程。代理的invoke方法完成的工作,可以称为织入。
(3) 连接点(JoinPoint)
连接点是指可以被切面织入的方法。通常业务接口的方法均为连接点
(4)切入点(PointCut)
切入点指切面具体织入的方法
注意:被标记为final的方法是不能作为连接点与切入点的。因为最终的是不能被修改的,不能被增强的。
(5)目标对象(Target)
目标对象指将要被增强的对象。即包含主业务逻辑的类的对象。
(6)通知(Advice)
通知是切面的一种实现,可以完成简单的织入功能。通知定义了增强代码切入到目标代码的时间点,是目标方法执行之前执行,还是执行之后执行等。切入点定义切入的位置,通知定义切入的时间。
(7)顾问(Advisor)
顾问是切面的另一种实现,能够将通知以更为复杂的方式织入到目标对象中,是将通知包装为更复杂切面的装配器。
通知的(advice)的类型:
前置通知(Before advice):连接点之前通知
返回后通知(After returning advice):连接点执行完成之后通知
抛出异常后通知(After throwing advice):抛出异常退出执行时通知
后通知(After (finally)advice):不论正常执行结束还是异常退出时执行的通知
环绕通知(Around advice):包围一个连接点的通知
3 spring中的aop