Java Spring AOP启动失败:NoSuchMethodError:org.springframework.core.annotation.OrderUtils.getOrder
我在所有RestController注释的控制器中都有一个切入点方面:Java Spring AOP启动失败:NoSuchMethodError:org.springframework.core.annotation.OrderUtils.getOrder,java,spring,spring-mvc,spring-aop,Java,Spring,Spring Mvc,Spring Aop,我在所有RestController注释的控制器中都有一个切入点方面: @Aspect @Component public class ControllerLoggingAspect { Logger log = LoggerFactory.getLogger(this.getClass()); @Pointcut("within(@org.springframework.web.bind.annotation.RestController *)") public vo
@Aspect
@Component
public class ControllerLoggingAspect {
Logger log = LoggerFactory.getLogger(this.getClass());
@Pointcut("within(@org.springframework.web.bind.annotation.RestController *)")
public void controller() {
}
@Before("controller()")
public void logBefore(JoinPoint joinPoint) {
log.info("START REST CONTROLLER");
}
@After("controller()")
public void logAfter(JoinPoint joinPoint) {
log.info("END REST CONTROLLER");
}
}
pom依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.12</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.7.3</version>
</dependency>
org.springframework
春季aop
5.0.1.发布
org.aspectj
aspectjweaver
1.8.12
org.aspectj
aspectjrt
1.7.3
我在日志中发现以下错误:
NoSuchMethodError:org.springframework.core.annotation.OrderUtils.getOrder
我可以用getOrder
方法验证我的项目中是否有OrderUtils
类
如果我删除带注释的@Before
和@Before
方法,Spring将启动,不会出现任何错误
有人知道我遗漏了什么吗?我的
spring aop
和spring core
依赖项之间的版本不同。将它们修复为匹配导致AOP按预期工作。为after annotation创建AOP类:
@Aspect
@Configuration
public class AfterAopAspect {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@AfterReturning(value = "execution(* com.alok.*.*(..))", returning = "result")
public void afterReturning(JoinPoint joinPoint, Object result) {
logger.info("{} returned with value {}", joinPoint, result);
}
@After(value = "execution(* com.alok.*.*(..))")
public void after(JoinPoint joinPoint) {
logger.info("after execution of {}", joinPoint);
}
}