Как заказать @ Aspect - PullRequest
0 голосов
/ 18 мая 2018

В (Spring boot) приложении, использующем много @Aspect

  1. Как бы вы обеспечили правильное упорядочение аспектов с помощью @Order, зная, что у вас не может бытьцентральное место для определения порядка, поскольку эти аспекты могут находиться в разных библиотеках, используемых разными приложениями?

  2. Как бы вы перечислили все @Aspect, присутствующие в контексте приложения, их порядок?

  3. Имеет ли смысл использовать @DeclarePrecedence в отдельном @Aspect для обеспечения порядка вместо @Order для такого варианта использования?

1 Ответ

0 голосов
/ 20 мая 2018

Я не являюсь пользователем Spring, но AFAIK @DeclarePrecedence не реализован в Spring AOP, он влияет только на аспекты AspectJ, то есть если вы используете LTW с AspectJ, он будет работать, иначе вы застряли с @Order плюс специальнымзначения, такие как Ordered.LOWEST_PRECEDENCE и Ordered.HIGHEST_PRECEDENCE.

IMO, если у вас есть проблемы с приоритетностью аспектов, ваш дизайн имеет недостатки.Аспект должен реализовывать сквозную проблему и быть независимым от других аспектов.Конечно, есть исключения из каждого правила, но они должны влиять только на аспекты из одной библиотеки, которые иногда могут быть взаимозависимыми.Аспекты разных библиотек не должны делать никаких предположений о порядке.Так что, если это реальная проблема в вашей кодовой базе, а не просто теоретический вопрос - go refactor!

...