上篇博客中描述了一个采用注解形式实现spring中AOP的例子,下面向大家展示一下采用
spring中声明的方式实现Spring AOP的实例。
采用注解实现的,大家可参考该blog:
[url]http://xtu-xiaoxin.iteye.com/blog/630206[/url]
先向大家声明,该篇博客只是给新手一个关于AOP的例子,以及方便我以后对注解实现AOP和声明实现AOP作对比,请大家原谅我贴出这种陈词滥调的东西。废话不说了,我先向大家描述该
示例。
CommonEmployee.java和注解AOP中的类一样,没有变化,也就是说目标对象是不变的,
具体想要了解该类详细代码,请看上篇blog。
通知类发生了一点小改变,具体通知类Logger.java如下:
可以看见,上面的通知类没有引入注解了。所以,要想在spring中使用没有注解的通知类,
则必须在spring配置文件中作如下配置:
最后,测试类Test.java代码已在上篇博文中贴出,详细请看:
[url]http://xtu-xiaoxin.iteye.com/blog/630206[/url]
最后得出测试结果如下:
[color=blue]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[/color]
这是个比较简单常见的实例,对Spring AOP入门的新手来说,我觉得还是有点帮助的,最后
我将整理下注解实现AOP以及声明实现AOP直接的一些适用场景,以巩固一下自己的知识。
spring中声明的方式实现Spring AOP的实例。
采用注解实现的,大家可参考该blog:
[url]http://xtu-xiaoxin.iteye.com/blog/630206[/url]
先向大家声明,该篇博客只是给新手一个关于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代码已在上篇博文中贴出,详细请看:
[url]http://xtu-xiaoxin.iteye.com/blog/630206[/url]
最后得出测试结果如下:
[color=blue]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[/color]
这是个比较简单常见的实例,对Spring AOP入门的新手来说,我觉得还是有点帮助的,最后
我将整理下注解实现AOP以及声明实现AOP直接的一些适用场景,以巩固一下自己的知识。