码迷,mamicode.com
首页 > 编程语言 > 详细

Spring-AOP的5种通知

时间:2016-02-19 17:28:26      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:spring 五大通知 ‍‍前置通知 后置通知 返回通知 异常通知 环绕通知 aop 切面编程

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种通知

标签:spring 五大通知 ‍‍前置通知 后置通知 返回通知 异常通知 环绕通知 aop 切面编程

原文地址:http://11189738.blog.51cto.com/11179738/1743383

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!