Spring AOP无法在maven多模块环境中工作

时间:2011-09-12 11:35:24

标签: java maven spring-aop

我在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方法没有被截获。

当我将所有文件保存在同一个模块中时,它可以工作。

我无法理解为什么它不起作用。有人可以解释一下。

0 个答案:

没有答案