Spring AOP 在 Maven 多模块环境中不起作用
我有一个基于 Spring 3 构建的 java 应用程序。
我的方面 ConsumerAspect.java
位于名为 Aspect
的单独 Maven 模块中。它有之前的通知和切入点,如下所示:
@Before("execution(* handle(..)) && args(inMessage,..)")
handle()
方法位于名为 Endpoint 的不同 Maven 模块中名为 EndpointListener.java
的不同类中。
我正在使用加载时编织,我的 aop.xml
如下所示:
<aspectj>
<weaver options="-verbose">
<!-- only weave classes in our application-specific packages -->
<include within="com.sabre.svm.ods.app.*"/>
<include within="com.sabre.svm.producer.messaging.*"/>
</weaver>
<aspects>
<!-- weave in just this aspect -->
<aspect name="com.sabre.svm.ods.app.OdsConsumer"/>
</aspects>
</aspectj>
如上所述,weaver 元素中的第一个包含内容是方面,weaver 元素中的第二个包含内容指向包含以下内容的包: EndpointListener.java
。
我的 spring applicationContext.xml
文件包含
<context:load-time-weaver aspectj-weaving="on"/>
<bean id="odsConsumerAspect" class="com.sabre.svm.ods.app.OdsConsumer">
</bean>
在 Aspect
模块的 pom.xml
中,我使用了以下插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4</version>
<configuration>
<forkMode>once</forkMode>
<argLine>
-javaagent:C:/spring-agent-2.5.6.jar
</argLine>
<useSystemClassloader>true</useSystemClassloader>
</configuration>
</plugin>
最后我添加了Aspect
模块作为 Endpoint
模块 pom 文件中的依赖项。
现在,当我执行应用程序时,handle
方法不会被拦截。
当我将所有文件保存在同一个模块中时,它就可以工作。
我无法理解为什么它不起作用。有人可以透露一些信息吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论