我创建了一个新的Spring引导项目,并试图实现一些AOP问题。
但是,我的代码根本无法识别AOP中的类。我检查并确认spring-aop-5.0.7.RELEASE.jar
确实存在于Maven依赖项和JRE运行时库中。
我的代码还很简单:
@Aspect
@Component
public class LoggingAspect {
@Around("execution(* com.springboot.service.*(..)) ")
public Object logAround(ProceedingJoinPoint joinPoint ) throws Throwable {
}
}
但是在这段代码Aspect cannot be resolved to a type
中,其他注释和类(例如Joinpoint
和@Around
)也是如此。其他Spring注释和类也可以正常工作。 @ Component,@ Controllers等。项目本身无需AOP就可以正常运行。
我已经尝试清理并重建项目。
我可能会缺少什么。任何帮助表示赞赏。
答案 0 :(得分:1)
@Aspect
位于spring-aspects.jar
或其依赖项之一中。将其添加为依赖项:
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
答案 1 :(得分:1)
@Aspect
和@Around
(以及其他类似的注释)是optional compile dependency in your version of spring-aop
的org.aspectj
aspectjweaver
工件的一部分。
您必须明确地包含它
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>