АОП в Spring Framework

Поделиться
HTML-код
  • Опубликовано: 20 янв 2025

Комментарии • 54

  • @dharma_42
    @dharma_42 17 дней назад +1

    Тайм-коды:
    1:30 - введение, что такое аор и для чего оно существует?
    2:31 - пример кода с дублирующимся кодом, где можно применить аор
    4:11 - теория о компонентах аор
    11:05 - зависимости, как подключить возможность использовать аор в спринге
    12:07 - подробное описание приложения, где будем тестить аор
    13:40 - создание конфига для аор
    14:42 - создание класса-аспекта для дальнейшего создания советов(advices) и точек среза(pointcut) нем
    16:00 - создаем advice и pointcut
    19:29 - подробнее о pointcut -> указатель within
    22:08 - несколько аннотаций в указателе within
    23:48 - указатель execution
    27:12 - еще больше об указателе execution - возможность указать аннотации для любой части сигнатуры метода+исключения+целевой класс
    32:52 - указатель this
    35:46 - указатель target
    37:43 - указатель args
    39:40 - указатель @target
    42:05 - указатель @args
    43:25 - указатель @within
    45:56 - указатель bean
    46:48 - использование отрицания, объединение нескольких правил, объединение правил в группы в pointcut
    49:37 - начало advice -> аннотация для совета Before
    50:35 - аннотация для совета After
    51:58 - аннотации для совета AfterReturning и AfterThrowing
    53:52 - получение доступа к результату/исключению после срабатывания советов AfterReturning и AfterThrowing
    56:33 - аннотация для совета Around(неверный синтаксис)
    58:58 - верный синтаксис работы аннотации Around(использование ProceedingJoinPoint)
    1:00:40 - порядок выполнения советов с разными аннотациями
    1:01:40 - использование JoinPoint и его методов в аннотациях для получение доп. инфы о выполняемой логике
    1:03:03 - модификация аргументов в методах с аннотацией Around
    1:05:17 - начало введения (Introduction)
    1:06:33 - статическая переменная + аннотация DeclareParents
    1:09:23 - уточнение, что модификация(добавления др. поведения/интерфейсов) через введения возможна только для proxy класса, но не для целевого класса
    1:11:14 - заключение

  • @flysang344
    @flysang344 9 месяцев назад +3

    Отличное видео, освежил знания по АОП. Помню использовал его в своем пет проекте и настраивал через XML.

  • @ЕвгенийАлексеев-о9э

    Супер, Тарантино снова снял шедевр)

  • @МихаилМихаил-ф7у
    @МихаилМихаил-ф7у 2 месяца назад +1

    какие же у вас шикарные видео, работаю на большом проекте, даже не видел АОП, сейчас стал больше разбираться. Спасибо большое.

  • @raccoon8230
    @raccoon8230 Год назад +5

    Спасибо за ролик, было бы крайне полезно разобрать управление транзакциями в Spring

  • @gogogo2022
    @gogogo2022 Год назад +13

    Тарантино вещает 😂🤙

  • @chesseranapa
    @chesseranapa Год назад +1

    Очередное видео, которое посмотрел с большим удовольствием. Краткость сестра таланта (с). Минимальный и достаточный набор для самостоятельного движения. Жаль что не было подобного видео, когда сам погружался в эту тему. И да, под капотом много странных эффектов. Применять нужно аккуратно и с проверкой.

  • @Ann_Askerova
    @Ann_Askerova Год назад +2

    Хочется поставить 10000 лайков) спасибо огромное за ролик, очень интересно!

  • @mikhailyegorov27
    @mikhailyegorov27 Год назад +1

    Шикарно, Спасибо Саша! AOP кстати используется для кастомизации аллюр отчетов. так что автотестерам тоже полезно)

  • @Po4kaKita
    @Po4kaKita Год назад +1

    Спасибо! Максимально приятно слушать на столько детальные объяснения

  • @DenisBezrukov-jr1tp
    @DenisBezrukov-jr1tp 9 месяцев назад +1

    Огромное тебе спасибо за такое классное обьяснение и ввод в тему Spring АОП.
    Пожалуйста, продолжай свое дело! У тебя очень хорошо получается.

  • @annanagornaia2032
    @annanagornaia2032 Год назад +1

    Спасибо, шикарное объяснение👀

  • @sergeng-gd5ev
    @sergeng-gd5ev 11 месяцев назад +1

    Молодец, очень доходчиво разложил!

  • @hackim2554
    @hackim2554 Год назад +1

    Лучший по обучению на java!
    Смотрю тебя, для подготовки на первое собеседование

    • @correctraccoon1262
      @correctraccoon1262 5 месяцев назад

      Как собеседования прошли?)

    • @hackim2554
      @hackim2554 5 месяцев назад

      @@correctraccoon1262 на ура. Его знания помогли мне обрести уверенность в базовом понимании авторизации

  • @Admin-qw7ss
    @Admin-qw7ss Год назад +1

    Хорошее видео, спасибо!

  • @zhennik263
    @zhennik263 10 месяцев назад +2

    Когда искал гайд по АОР через поиск этого видео мне не выдало. А вот в пекомендациях через неделю - чего нет...

  • @Mnbvc-oc8wv
    @Mnbvc-oc8wv Год назад +1

    Охрененные видео 🔥🔥🔥🔥🔥

  • @krab9512
    @krab9512 Год назад +1

    Это кайф, спасибо большое!

  • @ism_ak
    @ism_ak 6 месяцев назад +1

    Спасибо за труд!

  • @globalist1877
    @globalist1877 Год назад

    Какой позитив. Браво!!!

  • @alexshutov5442
    @alexshutov5442 Год назад

    Пушка. Спасибо за материал)

  • @wondergalya
    @wondergalya 5 месяцев назад +1

    Спасибо за видео!!

  • @melonboom299
    @melonboom299 9 месяцев назад +1

    Обожаю твои видео!

  • @mtg2844
    @mtg2844 Год назад +1

    Саша как реклама которая следит за мной, только сегодня на собеседовании плохо ответил про АОП и думал подучить нормально, а тут бац и ролик, значит суждено выучить)

  • @НикитаКорнюхин-я6щ
    @НикитаКорнюхин-я6щ 10 месяцев назад +1

    Как в случаем с видео про @Transactional тут также освещается очень редкая (в плане обучающих материалов), но популярная на собсесах и в жизни тема. Снова на высоте, полный восторг. Спасибо за проделанную работу! P.S. будет ли видео про batch или про брокеры сообщений? (какие-нибудь интересные кейсы с кафкой/рэбитом)

    • @shurik_codes
      @shurik_codes  10 месяцев назад

      Про очереди сообщений видео будут, да

  • @VenomMihajlov
    @VenomMihajlov 4 месяца назад +1

    мы любим большые ролики, нам нужны 12ти часовые ролики

  • @psergeev77
    @psergeev77 10 месяцев назад +1

    спасибо!

  • @kirillchug
    @kirillchug Год назад +1

    Можно ещё как в дополнение кроме Spring AOP ещё и про AspectJ рассказать по-подробней. Он расширенный ф-л предоставляет за счёт использование внутри либы ASM и использования своего языка, не аннотированный spring стиль.
    К примеру, часто бывает нужно чтобы аннотации триггерились и на методах, которые и когда вызываются внутри другого метода, не смотря на то что они оба публичны (тут проблема проксирования от Spring-а встаёт) или проблема работы с не публичными метода в Spring AOP

    • @shurik_codes
      @shurik_codes  Год назад +1

      Возможно когда-нибудь расскажу и про AspectJ, но планов и так очень много, а тема AspectJ мне кажется не очень востребованной. Хотя признаю, что AspectJ - невероятно мощный и полезный инструмент.
      >> не аннотированный spring стиль
      А это и не Spring-стиль, скорее даже наоборот - аннотации появились в AspectJ 5 аж в 2003-2004 году)
      >> аннотации триггерились и на методах, которые и когда вызываются внутри другого метода
      Это проблема динамического связывания в целом, так как перехватывает вызовы прокси-объект, о существовании которого целевой объект не знает. Целевой объект обращается к самому себе напрямую, минуя прокси. Чтобы перехватывать внутренние вызовы, нужно нагородить костылей с внедрением ссылки на прокси в целевой объект, либо внедрить контекст Spring и обращаться к "своим" методам через прокси, получаемого из контекста. Либо использовать другие виды связывания.

  • @gnori
    @gnori Год назад

    Емае, какой же качественный материал о АОП. Готов поспорить, за маской Саши скрывается Sam Brannen)

  • @romanovichihin2429
    @romanovichihin2429 Год назад +1

    лайк, коммент, некст!

  • @ilYa1984
    @ilYa1984 4 месяца назад +1

    Разработка == метафоры + (само)ирония
    Примеси в других ЯП реализуются подобным образом на уровне языка?

    • @shurik_codes
      @shurik_codes  4 месяца назад

      Вполне возможно, что да, но на этапе компиляции

  • @Alex.Polyakov
    @Alex.Polyakov 3 месяца назад

    А почему классы в твоих проектах либо абстрактные или финальные?

  • @great_patriarch1459
    @great_patriarch1459 Год назад

    А при использовании каких ещё аннотаций из часто использованных используется прокси? Кроме Configuration

    • @shurik_codes
      @shurik_codes  Год назад

      Не понял сути вопроса)

    • @shurik_codes
      @shurik_codes  Год назад +1

      После уточнения от @enjoyit8499 понял о чём речь. На самом деле в Sprung Framework и его экосистеме много чего основано на АОП и динамическом проксировании. И @Transactional, и @Cachable, и @PreAuthorize/@PostAuthorize и т.д.

  • @tusman4ik
    @tusman4ik Год назад

    Можно ли ссылочку на ваш гитхаб? Как начинающему разрабу, очень хочется почитать чужой код. Спасибо!

    • @shurik_codes
      @shurik_codes  Год назад

      github.com/alex-kosarev но там код красотой не блещет)

    • @tusman4ik
      @tusman4ik Год назад

      @@shurik_codes огромное вам спасибо!)

  • @ВячеславГагаринов-э2ж
    @ВячеславГагаринов-э2ж 9 месяцев назад +1

    Видео понравилось, а есть ссылка на код из видео?

    • @shurik_codes
      @shurik_codes  9 месяцев назад

      К сожалению нет

  • @iKorvik
    @iKorvik 10 месяцев назад +1

    Всё-таки лучше не пытаться переводить какие-то названия методов или ещё чего

  • @ДмитрийЦыганов-г9ь
    @ДмитрийЦыганов-г9ь 8 месяцев назад

    А можно ли создать Pointcut для того чтобы фильтровать методы в которых есть именно параметры, аннотированные какой-нибудь аннотацией, к примеру @RequestBody?

    • @shurik_codes
      @shurik_codes  8 месяцев назад

      Конечно можно

    • @ДмитрийЦыганов-г9ь
      @ДмитрийЦыганов-г9ь 8 месяцев назад

      @@shurik_codes 2 раза пересмотрел видео и не нашел ответа, только указание параметров типы которых отмечены аннотацией или просто здесь это не рассматривалось?