首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一步一步学习spring(7)——采用声明方式实现AOP的例子

2012-10-06 
一步一步学习spring(七)——采用声明方式实现AOP的例子上篇博客中描述了一个采用注解形式实现spring中AOP的

一步一步学习spring(七)——采用声明方式实现AOP的例子
   上篇博客中描述了一个采用注解形式实现spring中AOP的例子,下面向大家展示一下采用
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" value="good"></property>    </bean>    <bean id="advice" />   <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直接的一些适用场景,以巩固一下自己的知识。 1 楼 kidd3166 2010-04-06   写是写了喇,不知道如何获取切割方法的参数呢 2 楼 XTU_xiaoxin 2010-04-07   Object[] args = joinPoint.getArgs();   kidd3166 写道写是写了喇,不知道如何获取切割方法的参数呢

文章的around通知有描述,即通过 “Object[] args = joinPoint.getArgs(); "形式获得方法参数

热点排行