浏览 3363 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-02
最后修改:2010-04-02
spring中声明的方式实现Spring AOP的实例。 采用注解实现的,大家可参考该blog: http://xtu-xiaoxin.iteye.com/blog/630206 先向大家声明,该篇博客只是给新手一个关于AOP的例子,以及方便我以后对注解实现AOP和声明实现AOP作对比,请大家原谅我贴出这种陈词滥调的东西。废话不说了,我先向大家描述该 示例。 CommonEmployee.java和注解AOP中的类一样,没有变化,也就是说目标对象是不变的, 具体想要了解该类详细代码,请看上篇blog。 通知类发生了一点小改变,具体通知类Logger.java如下: package com.aop; import java.util.Date; import org.aspectj.lang.ProceedingJoinPoint; public class Logger{ //spring中Before通知 public void logBefore() { System.out.println("logBefore:现在时间是:"+new Date()); } //spring中After通知 public void logAfter() { System.out.println("logAfter:现在时间是:"+new Date()); } //spring中Around通知 public Object logAround(ProceedingJoinPoint joinPoint) { System.out.println("logAround开始:现在时间是:"+new Date()); //方法执行前的代理处理 Object[] args = joinPoint.getArgs(); Object obj = null; try { obj = joinPoint.proceed(args); } catch (Throwable e) { e.printStackTrace(); } System.out.println("logAround结束:现在时间是:"+new Date()); //方法执行后的代理处理 return obj; } } 可以看见,上面的通知类没有引入注解了。所以,要想在spring中使用没有注解的通知类, 则必须在spring配置文件中作如下配置: <bean id="employee" class="com.aop.CommonEmployee"> <property name="name" value="good"></property> </bean> <bean id="advice" class="com.aop.Logger" /> <aop:config > <aop:aspect ref="advice"> <aop:pointcut id="pointcut" expression="execution(* com.aop.CommonEmployee.sign*(..))"/> <aop:before method="logBefore" pointcut-ref="pointcut"/> <aop:after method="logAfter" pointcut-ref="pointcut"/> <aop:around method="logAround" pointcut-ref="pointcut"/> </aop:aspect> </aop:config> 最后,测试类Test.java代码已在上篇博文中贴出,详细请看: http://xtu-xiaoxin.iteye.com/blog/630206 最后得出测试结果如下: logBefore:现在时间是:Fri Apr 02 14:44:37 CST 2010 logAround开始:现在时间是:Fri Apr 02 14:44:37 CST 2010 good已经签到了........... logAfter:现在时间是:Fri Apr 02 14:44:37 CST 2010 logAround结束:现在时间是:Fri Apr 02 14:44:37 CST 2010 这是个比较简单常见的实例,对Spring AOP入门的新手来说,我觉得还是有点帮助的,最后 我将整理下注解实现AOP以及声明实现AOP直接的一些适用场景,以巩固一下自己的知识。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-06
写是写了喇,不知道如何获取切割方法的参数呢
|
|
返回顶楼 | |
发表时间:2010-04-07
Object[] args = joinPoint.getArgs();
kidd3166 写道 写是写了喇,不知道如何获取切割方法的参数呢
文章的around通知有描述,即通过 “Object[] args = joinPoint.getArgs(); "形式获得方法参数 |
|
返回顶楼 | |