标签:数据库 tran before 之间 就是 int http 处理 统一
-ApectJ
-SpringAOP、JbossAOP
连接点:比如一个类中某个方法执行的开始
通知:在某个方法执行的时候,额外执行的切面的动作
切入点:如何在切面中去匹配一个具体的连接点
引入:源代码中并没有这样的方法和属性,通过修改字节码文件为类增加新的方法和属性
目标对象:比如说我们有订单service和商品service,切面会通知所有的service在去执行数据库操作的时候,去加上事务的控制,这两个sevice就是目标对象,也就是被切面所通知的对象
前置通知:比如说这个连接点是一个方法,那么前置通知就是在方法之前执行的,在进入到方法之前执行的
返回后通知:在某个方法执行完成并返回值后再去执行的通知
抛出异常后通知:当某个方法抛出异常之后才会被执行到的通知
配置切面aspect
配置切入点Pointcut
Spring AOP、AspectJ都支持
只有Spring AOP支持
例子1:
例子2:
配置一个完整的<aop:config>
前置通知
声明Before advice的两种方式
在返回之后的通知
pointcut-ref :引用某一个切入点
method:在After returning advice这个通知上要执行的方法是什么样
returning="retVal":限制返回值
抛出异常之后返回
返回的通知:在返回之后或者可以理解是方法结束前的最后一条代码取执行after advice,无论方法是否正常结束,after advice都会被执行
环绕通知
通知里面使用参数的方式
Introductions
配置
Advisors的配置
ProxyFactoryBean及相关内容
ProxyFactoryBean通过以下方式来达到代理的目的
任何包的类下面只要有transfer方法,都会匹配这个切入点anyOldTransfer
切入点支持哪些种定义方式或者哪些个点可以定义
定义两个连接点(切入点)
切入点1:执行com.imooc.aop.aspect.biz包下面所有以Biz结尾的类的任何类型的方法的时候,都会匹配当前的切入点
切入点2:当前这个包下的任何类都会匹配到这个切入点
执行所有public类型方法的时候会匹配这个切入点
如何定义良好的切入点?
在aspectj中advice的定义
例子
使用advice的两种方式
1.直接定义一个execution的表达式
2.使用一个已经存在的pointcut,也就是引用一个已经定义好的切入点
Advice扩展应用
Introductions实现方式
标签:数据库 tran before 之间 就是 int http 处理 统一
原文地址:https://www.cnblogs.com/songsongblue/p/9735835.html