我有一个控制器方法,该方法带有2个自定义注释。
其中一个由HandlerInterceptorAdapter
处理,这是Spring MVC的一部分。
另一个由AOP @Aspect
处理。
似乎第一个总是优先于最后一个。
在这种情况下,放置@Order(value = Ordered.HIGHEST_PRECEDENCE)
无效。
有什么办法可以在这两者之间安排执行顺序?
答案 0 :(得分:1)
春季ExposeInvocationInterceptor
中有一个@Order(value = Ordered.HIGHEST_PRECEDENCE + 1)
的拦截器,并且javadoc说
如果使用,则此拦截器通常是拦截器链中的第一个。
因此,没有任何拦截器具有更高的顺序。因此,如果您添加+1
,即与ExposeInvocationInterceptor
(或更高)相同的优先级,它将起作用。
因此,我尝试了以下方法并起作用:
@Order(value = Ordered.HIGHEST_PRECEDENCE + 1)
@Order(value = Integer.MIN_VALUE + 1)
显然是Ordered.HIGHEST_PRECEDENCE = Integer.MIN_VALUE
。