[英]Spring AspectJ pointcut not created
我有一个Spring Web应用程序,其中正在尝试使用AspectJ执行一些日志记录。
我在配置类上启用了@EnableAspectJAutoProxy并声明了我的方面:
@Aspect
@Component
public class LoggerAspect {
然后,我在定义到库中的类的方法上放置了一个切入点(当然,这是作为依赖项运送到战争中的),在主项目的类上放置了另一个切入点(运送到战争中的一个)。
在运行单元测试时,一切正常,我得到了我的建议。
如果我将我的应用程序部署在tomcat 7上,则仅会调用放置在jar中包含的类上的建议,而另一个(部署到WEB-INF / classes中)将被忽略。
从日志中,我看不到任何奇怪之处,这是因为没有为位于WEB-INF中的类创建AopProxy(这与不调用建议的事实是一致的)。
我想念什么?
谢谢。
得到它了。
问题在于,在正常运行期间,方面是在应该遵循的类之前被自动发现的。
实际上,我在WebAppInitializer中具有以下功能:
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { CoreConfig.class, LibConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class};
}
LibConfig是在库中自动发现服务的一个(方面一直在工作的那个)。 CoreConfig是发现方面的一种。 WebConfig是自动发现我要拦截的另一个类的一个。
因此,在启动时,方面已在WebConfig中的类可用之前初始化,因此它无法放置Pointcut。 在测试期间,所有类都一起加载,一切都很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.