我只想了解一些与SpringAOP建议排序相关的内容。文件上写着
当在同一方面定义的两条建议都需要在同一连接点上运行时,排序是未定义的(,因为没有办法通过javac编译类的反射来检索声明顺序)。考虑将这样的建议方法折叠为每个方面类中每个连接点的一个建议方法,或者将建议片段重构为单独的方面类,这些方面类可以在方面级别进行排序。
我知道我们不能在一个方面中为同一切入点定义多个建议。我只想理解没有办法通过反射来检索javac编译类的声明顺序是什么意思?。
我已经在一个Aspect中的同一切入点上的多个通知上放置了@Order注释,并清楚地定义了从1到3的顺序。为什么它在通过反射读取Aspect类中的@Order注释并按正确顺序正确调用通知时无法获得这个数字顺序值?有谁能让我明白这一点吗。非常感谢提前
这意味着,如果没有明确指定,则顺序是未定义的。@Order
注释具有运行时保留:
@Retention(value=RUNTIME)
@Target(value={TYPE,METHOD,FIELD})
public @interface Order
通过反射可以读取顺序。