一步一步学习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" 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直接的一些适用场景,以巩固一下自己的知识。

你可能感兴趣的:(java,spring,AOP,Blog)