在使用大量@Aspect
您如何确保使用@Order
进行正确的方面排序,因为您知道您无法定义排序的中心位置,因为这些方面可能位于不同应用程序使用的不同库中?
您如何列出应用程序上下文中存在的所有@Aspect
及其订单?
在单独的@DeclarePrecedence
中使用@Aspect
以确保此类用例的排序而不是@Order
是否有意义?
答案 0 :(得分:0)
我不是Spring用户,但AFAIK @DeclarePrecedence
未在Spring AOP中实现,它只影响纯粹的AspectJ方面,即如果你将LTW与AspectJ一起使用它会起作用,否则你会被{{1加上@Order
和Ordered.LOWEST_PRECEDENCE
之类的特殊值。
IMO如果您遇到方面优先级问题,您的设计就会出现问题。一个方面应该实现跨领域的关注并独立于其他方面。当然,每条规则都有例外,但这些只会影响一个图书馆的某些方面,这些方面有时可能是相互依存的。来自不同库的方面不应对订单做出任何假设。因此,如果这是您的代码库中的真正问题,而不仅仅是理论问题 - 去重构!