Spring Aspects没有执行

时间:2011-11-17 06:43:55

标签: spring aop aspectj

我一直在努力为Spring MVC webapp添加方面,而且方面没有执行。我试图把它煮成一些简单的东西,显然应该可以工作,但仍然没有去。这就是我现在所处的位置:

// imports...
@Aspect
public class AuthCheckerAspect {
    {
        System.out.println("initting");
    }

    @Pointcut("execution(* * *(..))")
    public void c() {}

    @Before("c")
    public void cc(JoinPoint pjp) throws Throwable {
        System.out.println("test...");
    }
 }

据我所知,切入点应该适用于任何Spring托管类中的任何方法(我的应用程序中有很多)。我还在Spring配置中添加了以下内容:

<aop:aspectj-autoproxy/>

我在cc()方法的System.out.println()语句中设置了一个断点,但它从未被捕获(是的,我肯定是调试器是附加的;其他断点正确捕获)。我怀疑AuthCheckerAspect类永远不会被加载到Spring上下文中,因为我还在初始化器子句中设置了一个断点,并且从不捕获;当我对其他Spring管理的类做同样的事情时,他们的断点总是在app启动时捕获。

我还需要做些什么吗?

提前致谢。

2 个答案:

答案 0 :(得分:9)

Spring不会自动管理@Aspect。将<bean class="AuthCheckerAspect" />添加到您的上下文或使用@Component对其进行注释,并将其包含在组件扫描路径中。

答案 1 :(得分:3)

将其添加到配置文件中:

<context:annotation-config />
<context:component-scan base-package="root.package.to.be.scanned" />
<aop:aspectj-autoproxy>
    <aop:include name="nameOfAspectBean" />
</aop:aspectj-autoproxy>