我的应用程序包含两个Web应用程序和EAR级别的jar文件。
一个Web应用程序(比如说SPApp)是使用Spring构建的,另一个是使用Struts(STApp)构建的。
我想分享这里定义的SPApp的Aspect类SystemArchitecture
spring aop
6.2.3.3。共享通用切入点定义
在STApp。
我在EAR级jar文件中添加了SystemArchitecture
类,并从SPApp调用,但在访问STApp时不执行。
然后我将方面类SystemArchitecture
移到了STApp中,令人惊讶的是它有效。
当我将SystemArchitecture
放在EAR级别的lib中时,我不确定会出现什么问题。
请帮忙。
谢谢, Hanumant
答案 0 :(得分:0)
Spring AOP不会在春天以外工作。 AOP的Spring实现基于动态代理,其中spring bean工厂将代理建议的类来注入您的切入点。你所追求的是所谓的“加载时间编织”,其中java代理用于拦截ClassLoader并在加载时装饰建议类。这是一个AspectJ功能,而不是Spring AOP。在此处阅读更多内容:http://www.eclipse.org/aspectj/doc/released/devguide/ltw.html
Spring和AspectJ也可以一起玩,但它仅限于弹簧驱动的应用程序:http://static.springsource.org/spring/docs/3.0.0.RC2/spring-framework-reference/html/ch07s08.html
但是,如果你想要“真正的”AOP,独立于Spring那么你需要进行加载时编织和AspectJ。
编辑:可能误解了您的问题。你说只有当你把你的建议类放在应用程序本身时,它才能在你的struts应用程序中运行。从那以后我读到你的Struts应用程序也是Spring驱动的。在不知道你的配置的情况下很难给出答案。具体来说,web.xml(both),application.xml和你的spring configs。