使用ZK配置AOP以拦截方法

时间:2012-03-19 09:39:12

标签: java spring spring-aop zk

在某些方法之前(或者现在所有的方法),我必须调用Aspect的方法来记录一些消息。我的应用程序正常运行,但没有调用Aspect类的任何方法。

我在本地应用程序中的相同文件夹结构中尝试了相同的cutpoint,但是当我尝试将其包含在ZK中时,我遇到了问题。我还修改了application-context.xml来支持AOP。

这是我的方面类:

package com.mypckg.services.impl;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class MyIntercpeter {

    @Pointcut("execution(* com.mypckg.services.impl.MyService.getStudents(..))")
    public void performance() {
    }

    @Before("performance()")
    public void doSomethingBeforeExecution() {
        System.out.println("Before execution method called...");


    }

    @AfterReturning("performance()")
    public void doSomethingAfterExecution() {
        System.out.println("After execution method called...");

    }
}

我在application-context.xml中所做的修改是

<beans  .........

    xmlns:aop="http://www.springframework.org/schema/aop"

    xsi:schemaLocation="
           ..........
             http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop.xsd">


.....

<aop:aspectj-autoproxy />
<context:annotation-config />

我错过了什么吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

看起来你错过了一个明显的事情:你忘了在spring config中声明bean了吗?

来自Spring docs:

Spring AOP仅支持Spring bean的方法执行连接点,因此您可以将切入点视为匹配Spring bean上方法的执行。

http://static.springsource.org/spring/docs/2.0.x/reference/aop.html

您可以使用注释或配置声明bean。

最好放一个你使用的弹簧版本(我认为它是2.0.x)。