【发布时间】:2017-05-10 14:30:33
【问题描述】:
我有一个 Java EE Web 服务 (REST),现在想使用 AspectJ 创建一个规则,该规则将打印出每个传入的服务调用及其参数。
我刚刚阅读了这个tutorial 并实现了以下代码:
POM.XML
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.10</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version>
<configuration>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
<showWeaveInfo>true</showWeaveInfo>
<verbose>true</verbose>
<Xlint>ignore</Xlint>
<encoding>UTF-8 </encoding>
</configuration>
<executions>
<execution>
<goals>
<!-- use this goal to weave all your main classes -->
<goal>compile</goal>
<!-- use this goal to weave all your test classes -->
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
...并创建了一个 Test.aj 文件,其中有一个切入点,在调用 getSignOfLife() 后应该打印出一个测试字符串:
import de.jack.businesspartner.service.BusinessPartnerServiceImpl;
public aspect TestAspectJ {
pointcut getSignOfLife() :
call(void BusinessPartnerServiceImpl.getSignOfLife());
before() : getSignOfLife() {
System.err.println("ADKL TEST ASPECT");
}
}
--> 但是如果我调用 getSignOfLife() 方法,什么都不会发生。你能帮帮我吗?
【问题讨论】:
-
您是从 IDE 运行您的应用程序,还是创建一个 .war 文件并将其部署到某个应用程序服务器/servlet 容器?
-
我用我的 IDE 创建了一个 .war 文件,并将它部署到我的 wildfly 应用服务器。但是如果我调用 getSignOfLife() 方法,则不会调用方面...
-
你用什么做服务器?
-
您的 Wildfly 服务器的配置和版本是什么?
标签: java web-services maven aspectj