我一直在努力为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启动时捕获。
我还需要做些什么吗?
提前致谢。
答案 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>