我想在我的应用程序中加入AspectJ以了解它是如何工作的。一世 我不喜欢使用Spring AOP,而是使用“纯粹”的方面。
这就是我所拥有的:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>
和
package tmp;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class LoggingAspect {
@Pointcut("execution(* *.*(..))")
void anyMethodCall() {
}
@Before("anyMethodCall()")
public void beforeMethod() {
System.out.println("Aspect Before Method");
}
}
当我执行我的应用程序时,不会打印该消息。
我理解它的方式,beforeMethod
应该在整个项目中任何类的任何方法之前调用。
我猜我忘记了一些事情,但我还没有找到一个好的教程,但我很清楚它是如何工作的。
我在这里去哪里?
答案 0 :(得分:1)
在Eclipse项目中,必须将项目类型更改为aspectj项目(右键在项目上 - &gt; AspectJ)
你需要在pom.xml
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<configuration>
<complianceLevel>1.7</complianceLevel>
<source>1.7</source>
<target>1.7</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.codehaus.mojo
</groupId>
<artifactId>
aspectj-maven-plugin
</artifactId>
<versionRange>
[1.7,)
</versionRange>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
将你的切入点更改为&#34;!(tmp.LoggingAspect)&amp;&amp;执行(* 。(..))&#34;为了避免抓住他自己。
答案 1 :(得分:1)
在我的IDEA中,它已经内置了自13版本以来的aspectj插件。您应该做的下一步是更改Java编译器的设置。
Project Setting –> Compiler –> Java Compiler
“使用编译”:更改为Ajc;
“Ajc编译器的路径”:aspjectjtools.jar;
如果你没有罐子,请点击http://mvnrepository.com/artifact/org.aspectj以获得你想要的东西。
现在,运行你的程序,它会起作用。祝你好运!