利用Spring的AOP处理项目日志
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的配置文件中我们需要进行几句话的配置
>
Need a translation service?
Please enter your personal details and we will contact you shortly
Words translated by CCJK
146,096,379Over 95% of our clients recommend our language services to others