[英]Ordering third party Aspect in Spring
我有一個新的看點,我想申請@Around
帶注釋服務方法@HystrixCommand
。 由於有注釋,因此將自動應用HystrixCommandAspect
。
但是, HystrixCommandAspect
沒有定義@Order
,我懷疑這意味着它默認為Integer.MAX_VALUE
(即應最后執行)。 我需要我的方面最后運行,因為HystrixCommandAspect
在另一個線程上執行service方法,而我的方面需要在該線程上運行(原因在這里可能並不重要,但涉及線程本地存儲)。
似乎當@Order
有一個平局時,順序以某種方式由Spring的組件掃描確定。 有沒有辦法手動指定Spring應用這些方面的順序(假設我不能更改HystrixCommandAspect
的@Order
)?
您可以嘗試使用@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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.