gpt4 book ai didi

java - 开始使用aspectj而不使用Spring AOP

转载 作者:行者123 更新时间:2023-12-02 03:10:02 24 4
gpt4 key购买 nike

我想将 AspectJ 合并到我的应用程序中以了解它的工作原理。我我不想使用 Spring AOP,而是使用“纯”aspectj。

这是我所拥有的:

<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 应该在整个项目中任何类的任何方法之前调用。

我猜我忘记了一些东西,但我还没有找到一个很好的教程,让我清楚它是如何工作的。

我该去哪里?

最佳答案

在 Eclipse 中,项目类型必须更改为spectj项目(在项目上右键->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>

将切入点更改为“!within(tmp.LoggingAspect) &&execution(* .(..))”以避免自己被捕获。

关于java - 开始使用aspectj而不使用Spring AOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com