我有一个新的方面,我想应用@Around注释为@HystrixCommand的服务方法。由于有注释,因此会自动应用HystrixCommandAspect

但是,HystrixCommandAspect没有定义@Order,我怀疑这意味着它默认为Integer.MAX_VALUE(即应该最后执行)。我需要我的方面最后运行,因为HystrixCommandAspect在不同的线程上执行service方法,而我的方面需要在该线程上运行(原因在这里可能并不重要,但涉及线程本地存储)。

看来,当@Order中有平局时,顺序由Spring的组件扫描以某种方式确定。有没有一种方法可以手动指定Spring应用这些方面的顺序(假设我不能更改@OrderHystrixCommandAspect)?

最佳答案

您可以尝试使用@DeclarePrecedence,例如:

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.DeclarePrecedence;

@Aspect
@DeclarePrecedence("*, com.example.HystrixCommandAspect, com.example.YourCustomAspect")
public class AspectOrder {
}


可能需要您切换到AspectJ。

07-24 14:36