我在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
的包。
我的春季applicationContext.xml
文件包含
<context:load-time-weaver aspectj-weaving="on"/>
<bean id="odsConsumerAspect" class="com.sabre.svm.ods.app.OdsConsumer">
</bean>
在pom.xml
模块的Aspect
我使用了以下插件:
<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
模块pom文件中添加了Endpoint
模块作为依赖项。
现在,当我执行应用程序时,handle
方法没有被截获。
当我将所有文件保存在同一个模块中时,它可以工作。
我无法理解为什么它不起作用。有人可以解释一下。