我已经使用@Aspect注释声明了我的方面,但建议似乎没有得到应用.该方面适用于我所拥有的其他一些项目,关键区别似乎是其他项目使用注释完全连线,这个特定项目是xml有线.连接注释的唯一bean是Aspect.所以我想知道spring的aspectj是否支持,当使用aspectj-autoproxy时,对于在xml中定义bean的顺序很敏感.
例如,将xml中的aspectj-autoproxy之后声明的bean考虑用于AOP切入点吗?
编辑:
我移动了< aop:aspectj-autoproxy />直到所有豆子都被创造出来之后仍然没有运气.
@Component
@Aspect
public class SomeAspect {
@Pointcut("@annotation(MyAnnotation)")
public void isX() {}
@After("isX()")
public void XX() {
System.out.println("Called aspect");
}
}
我的控制器有类似的东西:
public class XController extends AbstractCommandController {
@MyAnnotation
public void handleX(...) {
// do stuff
}
@Override
protected void handle(...) {
return handleX(...);
}
}
然后spring xml是:
我之前的项目通过组件扫描捕获并加载了所有bean.这次是不同的.
EDIT2:
另一个区别是其他项目正在使用@Controller和@RequestMethod.在这种情况下,我正在使用AbstractCommmandController的派生类.我想知道这是否适用:
http://forum.springsource.org/archive/index.php/t-46637.html
即我不能向除handleRequest()之外的任何方法应用建议.
EDIT3:
我最近的尝试是覆盖handleRequest()并在那里应用我的注释.假设当spring代理我的控制器时,它会看到注释并应用建议,因为它通过公共外部调用方法调用.这仍然不起作用.
最佳答案