spring Aspect 注释无法解析为类型

问题描述 投票:0回答:4

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

这是我的 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");
  }
}
java spring annotations aop aspect
4个回答
2
投票

对我来说,错误是 @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 现在工作正常。


0
投票

尝试添加这些依赖项:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
</dependency>

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

0
投票

XXX 无法解析为类型。

...听起来很像编译器错误消息,典型缺少导入语句(IDE“源”菜单中的“组织导入”):

package com.stock.mvc.aspect;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect public class ...

AND

@Before
区分大小写,采用驼峰式大小写。


0
投票

错误是 @Aspect 未解析为类型 基本上,问题是依赖关系没有被识别。

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.