java - spring Aspect 注释无法解析为类型

标签 java spring annotations aop aspect

你好 我正在尝试使用 spring 注释和 AspectJ 实现一个方面 但我不断收到错误 Aspect无法解析为类型

这是我的 pom.xml :

<dependencies>
    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework-version}</version>
        <exclusions>
            <!-- Exclude Commons Logging in favor of SLF4j -->
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.6.11</version>
    </dependency>

和我的日志记录类

package com.stock.mvc.aspect;

@Aspect
public class LoggingAspect {

  @before("execution(* * getRadius())")
  public void loggingAdvice(){
    System.out.println("call method before getRadius");
  }
}

最佳答案

对我来说,错误是 @Aspect 和 @Before 未解析为类型。

而且 org.aspectj 库也没有被调用。

所以基本上,问题是依赖关系未被识别。

这些是实现aspectJ库所需的唯一依赖项。

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <scope>runtime</scope>
</dependency>

通过删除 pom.xml 文件中的运行时范围解决了该问题。

<scope>runtime</scope>

然后我的库得到了认可,@Aspect 现在工作正常。

关于java - spring Aspect 注释无法解析为类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60572422/

相关文章:

java - 通过 Stream API 迭代并减少 Java 映射的值

java - 马文 : install results to Compilation failure

java - 为什么@AfterReturning 只在@AfterThrowing 之后执行异常?

java - 使用 spring 的 Rabbitmq 集群在故障转移后不会进行故障恢复

ios - 第一次尝试时 map 未以注释图钉为中心

java - 使用 spring mvc 获取 URL 参数

java - LWJGL - OpenGL 上下文在关闭 Hook 中丢失

java - Spring Boot 和 Hibernate 多次调用同一个方法

java - 如何实现类似于@Override java注解的东西?

Spring RequestMapping参数自定义注解