单个Aspect中的多个建议用于相同的方法执行切入点 - Spring AOP

时间:2015-11-04 14:15:37

标签: java spring reflection spring-aop

我只是想了解与Spring AOP建议订购相关的内容。在文档中它说

  

当在同一方面定义的两条建议都需要在同一个连接点运行时,排序是未定义的(,因为没有办法通过反射为javac编译的类检索声明顺序)。考虑将这些建议方法折叠到每个方面类中每个连接点的一个建议方法中,或者将这些建议重构为单独的方面类 - 可以在方面级别进行排序。

我知道我们无法在一个Aspect中为相同的切入点定义多个建议。我只想了解是什么意思没有办法通过反射为javac编译的类检索声明顺序?。

我在一个方面的同一切入点上对多个建议放置了@Order注释,并清楚地定义了从1到3的顺序。为什么当它通过反射和正确读取Aspect类中的@Order注释时无法获得此数字顺序值按正确的顺序打电话给建议?任何人都可以让我理解这一点。很多人提前感谢

1 个答案:

答案 0 :(得分:1)

这意味着,如果未明确指定,则订单未定义。 @Order注释具有运行时保留期:

@Retention(value=RUNTIME)
@Target(value={TYPE,METHOD,FIELD})
public @interface Order

可以通过反思阅读订单。