gpt4 book ai didi

java - aspectj 中注释的优先顺序

转载 作者:行者123 更新时间:2023-11-30 11:32:11 25 4
gpt4 key购买 nike

我有两个不同的注释,它们使用 AspectJ 编译时编织,比如

1) 用于重试——如果抛出特定异常,该方法将自行重试
2) 翻译异常——即,如果抛出特定异常,将把源异常翻译成指定的目标异常

我如何定义这两个注释的工作顺序。这两个注解都是使用 aspectj 和 @around advice 实现的。

我怎样才能实现这种类型的功能`

Case 1
@retry(IllegalArgumentException.class)
@translate(source = IllegalArgumentException , target = IllegalStateException)
void method() {
//if it throws IllegalArgument exception
//method should retry and translate it to IllegalState after it
}


case2
@translate(source = IllegalArgumentException , target = IllegalStateException)
@retry(IllegalStateException.class)
void method() {
//methodthrows IllegalArgument exception which gets translated to IllegalState
//method should retry for IllegalStateException after it
}

`

有没有一种方法可以保证注解的操作顺序。

现在,当我运行代码时,重试注释首先运行,然后异常转换注释起作用。

最佳答案

使用declare precedence 来定义您想要的方面优先顺序。关于这个和默认优先级的更多信息可以在 AspectJ 编程指南的 Language Semantics 部分找到。 .

如果建议顺序应该是动态的,最好的办法是让一个切入点捕获两个注释,并根据可以通过反射确定的注释值来决定顺序。

关于java - aspectj 中注释的优先顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16778982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com