我有一个新的Aspect,我想应用@Around
一个用@HystrixCommand
注释的服务方法。由于注释,HystrixCommandAspect
会自动应用。
但是,HystrixCommandAspect
没有定义@Order
,我怀疑它意味着它默认为Integer.MAX_VALUE
(即它应该最后执行)。我需要我的方面最后运行,因为HystrixCommandAspect
在不同的线程上执行服务方法,我的方面需要在该线程上运行(原因可能在这里不重要,但它涉及线程本地存储)。
似乎当@Order
中存在平局时,顺序以某种方式由Spring的组件扫描确定。有没有办法手动指定Spring应该应用这些方面的顺序(假设我无法更改@Order
的{{1}})?
答案 0 :(得分:0)
您可以尝试使用@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。