AOP正在成为软件开发的下一个圣杯。使用AOP,你可以将处理aspect的代码注入主程序, 通常主程序的主要目的并不在于处理这些aspect。 AOP可以防止代码混乱。 为了理解AOP 如何做到这点,考虑一下记日志的工作。日志本身不太可能是你开发的主程序的主要任务。 如果能将“不可见的”、通用的日志代码注入主程序中,那该多好啊。AOP可以帮助你做到。

Spring framework是很有前途的AOP技术。作为一种非侵略性的,轻型的AOP framework,你无需使用预编译器或其他的元标签,便可以在Java程序中使用它。这意味着开发团队里只需 一人要对付AOP framework,其他人还是象往常一样编程。

AOP是很多直觉难以理解的术语的根源。幸运的是,你只要理解三个概念,就可以编写AOP模块。这三个概念是:advice,pointcut和advisor。

advice是你想向别的程序内部不同的地方注入的代码。pointcut定义了需要注入advice的位置,通常是某个特定的类的一个public方法。advisor是pointcut和advice的装配器,是将advice注入主程序中预定义位置的代码。

首先我们要写一个普通类,此类作为日志记录类。 比如

package chen.hui.log

public classs MyLog{

//在类里面写方法,方法名诗可以任意的。此处我用标准的before和after来表示

public void before(){

System.out.println(“被拦截方法调用之前调用此方法,输出此语句”);

}

public void after(){

System.out.println(“被拦截方法调用之后调用此方法,输出此语句”);

}

}

其次我们在写一个类作为被拦截类(Spring的AOP就是拦截这个类里面的方法)

package chen.hui.log

public class Test{//此类中方法可以写任意多个。我只写一个

public void test(){

Sytem.out.println(“测试类的test方法被调用”);

}

}

最后进行配置文件的编写。在Spring的配置文件中我们需要进行几句话的配置




>

到此处整个程序完成,在MyLog类里面的before和after方法添加日志逻辑代码就可以完成日志的管理。以上是对普通类的管理,如果只想拦截某一个类。只要把倒数第二个 * 改成类名就可以了。

第二:使用Spring AOP对action做日志管理

如果是想拦截action对action做日志管理,基本和上面差不多,但是要注意。以下几点

首先还是要写一个普通类,不过此类中的方法需要传入参数。 比如

package chen.hui.log

import org.aspectj.lang.JoinPoint;

public classs MyLog{

//在类里面写方法,方法名诗可以任意的。此处我用标准的before和after来表示

//此处的JoinPoint类可以获取,action所有的相关配置信息和request等内置对象。

public void before(JoinPoint joinpoint){

joinpoint.getArgs();//此方法返回的是一个数组,数组中包括request以及ActionCofig等类对象

System.out.println(“被拦截方法调用之前调用此方法,输出此语句”);

}

public void after(JoinPoint joinpoint){

System.out.println(“被拦截方法调用之后调用此方法,输出此语句”);

}

}

其次我们在写一个action类作为被拦截类(Spring的AOP就是拦截这个类里面的方法)

package chen.hui.log

public class LoginAction{//此类中方法可以写任意多个。我只写一个

public void test(){

Sytem.out.println(“测试类的test方法被调用”);

}

}

最后进行配置文件的编写。在Spring的配置文件中我们需要进行几句话的配置




>