Хобрук: Ваш путь к мастерству в программировании

определение точечного разреза весеннего аспекта

В Spring мы можем поделиться общими определениями pointcut, как показано ниже.

@Aspect
public class SystemArchitecture {

  /**
   * A join point is in the web layer if the method is defined
   * in a type in the com.xyz.someapp.web package or any sub-package
   * under that.
   */
  @Pointcut("within(com.xyz.someapp.web..*)")
  public void inWebLayer() {}

}

И вышеизложенное можно использовать, как показано ниже

@Aspect
public class MyAspect {


    @AfterThrowing(pointcut = "inWebLayer()  ")
    public void processError(JoinPoint jp) {
        logger.info("Enter:processError");

    }

}

Можно ли передать точку соединения в определение разреза точки разделения.

Что-то вроде ниже, где myCustomCheck — это еще одно определение разреза общей точки, которое проверяет что-то на основе переданной ему точки соединения.

 @Aspect
    public class MyAspect {


        @AfterThrowing(pointcut = "inWebLayer() && myCustomCheck(jp) ")
        public void processError(JoinPoint jp) {
            logger.info("Enter:processError");

        }

    }

Осуществимо ли это?

Спасибо

Жизни.


Ответы:


1

Вот что вы можете сделать в стиле кода:

public static boolean checkLine(JoinPoint tjp, int l) {
    return tjp.getSourceLocation().getLine()==l;
}

before(): execution(* just*(..)) && if(checkLine(thisJoinPoint,16)) {
    System.out.println("Execution!");
}

Не совсем передача точки соединения другому pointcut, вместо этого передача ее вспомогательному методу.

Я думаю, что подобное возможно в синтаксисе стиля аннотаций, но я не так быстро разрабатываю этот синтаксис, используя поддерживаемую им модель if().

14.07.2014
  • что это такое? Можем ли мы получить ссылку на точку присоединения, если мы получим доступ таким образом? 17.07.2014
  • thisJoinPoint — хорошо известная переменная, которую можно использовать в стиле кода pointcuts/advice, имеющем тип объекта JoinPoint. Для аспектов стиля аннотаций, которые вы используете, вы явно упоминаете об этом, как в своем примере: . Потребуется немного поэкспериментировать с синтаксисом if() стиля аннотации, который немного отличается. 19.07.2014
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..