Java Spring AOP启动失败:NoSuchMethodError:org.springframework.core.annotation.OrderUtils.getOrder

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

我在所有RestController注释的控制器中都有一个切入点方面:

@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);
    }
}