Spring-AOP的5种通知
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring-AOP的5种通知相关的知识,希望对你有一定的参考价值。
Spring AOP
五种通知:前置通知,后置通知,返回通知,异常通知,环绕通知
首先,配置使用AOP的环境:
需要将以下几个包导入到工程中:
org.springframework.aop-3.1.1.RELEASE.jar ---- ----spring 的面向切面编程,提供AOP(面向切面编程)实现
org.springframework.aspects-3.1.1.RELEASE.jar ---- ----spring 提供对 AspectJ 框架的整合
aopalliance.jar
aspectjweaver-1.7.4.jar
aspectjrt-1.7.4.jar
前置通知:
eg:
新建一个配置文件applicationContext.xml:
<context:component-scan base-package="com.zjy.spring.aop"></context:component-scan>表示通过注解配置com.zjy.spring.aop包下的所有类
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>表示让切面类能够自动装配
建立一个日志类:CalculatorLogging.java
其中
@Aspect注解表示这个类作为一个切面
@Component注解表示这个类同样也要放在IOC容器中
@Before注解表示这个方法是用来作为前置通知,也就是在它签名中所标识的具体方法调用之前就会进入这个方法
("execution(public int com.zjy.spring.aop.Calculator.add(int,..))")表示所有公有的返回值是int类型的属于com.zjy.spring.aop包下的类Calculator中add方法
其中,(int,...)表示这个方法第一个参数是int型,..表示后面的参数数量任意类型任意
打印结果:
后置通知:
使用方法与前置差不多
@After注解表示这个方法是用来作为后置通知,也就是在它签名中所标识的具体方法调用之后才会进入这个方法
返回通知:
@AfterReturning注解表示这个方法是用来作为返回通知,也就是在它签名中所标识的具体方法调用并返回之后才会进入这个方法
若方法出现执行中出现异常, 则不会进入到返回通知,但依然会进入前置和后置value属性表示所装配的类和方法
value属性表示所装配的类和方法
returning表示返回的结果
并且要在方法参数里面添加一个"Object result",这个变量名要与刚才returning所匹配的名字一致!
异常通知:
@AfterThrowing注解表示这个方法是用来作为异常通知,也就是在它签名中所标识的具体方法调用并出现异常之后才会进入这个方法
并且要在方法参数里面添加一个"Exception ex",这个变量名要与刚才throwing所匹配的名字一致!
value属性表示所装配的类和方法
throwing表示返回的异常对象
环绕通知:
@Around注解表示这个方法是用来作为环绕通知,也就是在它签名中所标识的具体方法调用会进入这个方法
环绕通知其实就相当于一个代理,可以在里面写上前置、后置、异常或返回等
环绕通知的日志方法必须要有返回值,并且以ProceedingJoinPoint pjoinpoint作为参数
pjoinpoint.proceed()表示执行它所受理的方法,并返回执行结果
注:本例中所用到的jar包和截图见文末附件
本文出自 “11179738” 博客,请务必保留此出处http://11189738.blog.51cto.com/11179738/1743383
以上是关于Spring-AOP的5种通知的主要内容,如果未能解决你的问题,请参考以下文章