你好 我正在尝试使用 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");
}
}
对我来说,错误是 @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 现在工作正常。
尝试添加这些依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
XXX 无法解析为类型。
...听起来很像编译器错误消息,典型缺少导入语句(IDE“源”菜单中的“组织导入”):
package com.stock.mvc.aspect;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect public class ...
AND
@Before
区分大小写,采用驼峰式大小写。
错误是 @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 现在工作正常。