АОП в Spring Framework

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.ค. 2023
  • Наряду с контейнером инверсии управления и внедрением зависимостей важной составляющей Spring Framework является реализация аспектно-ориентированного программирования (АОП), основная задача которого - внедрение сквозной логики в приложение. Под сквозной логикой понимается логика, применимая одновременно ко множеству компонентов, такая как управления транзакциями, доступом, журналирование и т.д.
    В Spring Framework и других фреймворках из его экосистемы аспектно-ориентированное программирование используется для неявного добавления сквозной логики к пользовательским компонентам. Так, например, непосредственно в самом Spring Framework реализовано декларативное управление транзакциями с использованием аннотации @Transactional, а в Spring Security - контроль доступа с использованием аннотаций @PreAuthorize и @PostAuthorize.
    00:01:30 Что такое аспектно-ориентированное программирование
    00:04:07 Компоненты АОП
    00:06:33 Виды связывания
    00:11:06 Необходимые зависимости, проект и поддержка АОП
    00:14:39 Аспект (Aspect)
    00:16:00 Точки среза (Pointcut)
    00:49:37 Советы (Advice)
    #java #spring #springframework #aop #aspectj #aspectorientedprogramming
    Мой сайт: alexkosarev.name/
    Паблик в VK: public218833461
    Канал в Telegram: t.me/+TZCuO38vG3oqu_Jq
    Стать доном: donut/shurik.codes
    Донаты в Boosty: boosty.to/akosarev/purchase/1...
    Донаты в Tinkoff: www.tinkoff.ru/cf/4PEOiVCZQuS

ความคิดเห็น • 45

  • @ism_ak
    @ism_ak 19 วันที่ผ่านมา +1

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

  • @flysang344
    @flysang344 3 หลายเดือนก่อน +3

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

  • @DenisBezrukov-jr1tp
    @DenisBezrukov-jr1tp 3 หลายเดือนก่อน +1

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

  • @gogogo2022
    @gogogo2022 ปีที่แล้ว +10

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

  • @user-pq7tk7gd2h
    @user-pq7tk7gd2h 6 หลายเดือนก่อน +3

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

  • @raccoon8230
    @raccoon8230 ปีที่แล้ว +4

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

  • @KeibyBigBalls
    @KeibyBigBalls 9 หลายเดือนก่อน +1

    Очень круто, один из немногих настолько подробных роликов на ютубе по теме АОП

  • @zhennik263
    @zhennik263 4 หลายเดือนก่อน +2

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

  • @Ann_Askerova
    @Ann_Askerova 11 หลายเดือนก่อน +2

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

  • @chesseranapa
    @chesseranapa 8 หลายเดือนก่อน +1

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

  • @hackim2554
    @hackim2554 6 หลายเดือนก่อน +1

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

  • @mikhailyegorov27
    @mikhailyegorov27 ปีที่แล้ว +1

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

  • @alexshutov5442
    @alexshutov5442 ปีที่แล้ว

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

  • @krab9512
    @krab9512 ปีที่แล้ว +1

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

  • @sergeng-gd5ev
    @sergeng-gd5ev 5 หลายเดือนก่อน +1

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

  • @Admin-qw7ss
    @Admin-qw7ss 8 หลายเดือนก่อน +1

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

  • @Po4kaKita
    @Po4kaKita ปีที่แล้ว +1

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

  • @Mnbvc-oc8wv
    @Mnbvc-oc8wv 11 หลายเดือนก่อน +1

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

  • @annanagornaia2032
    @annanagornaia2032 8 หลายเดือนก่อน +1

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

  • @globalist1877
    @globalist1877 ปีที่แล้ว

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

  • @melonboom299
    @melonboom299 3 หลายเดือนก่อน +1

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

  • @mtg2844
    @mtg2844 ปีที่แล้ว +1

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

    • @user-gw2xs4zm4r
      @user-gw2xs4zm4r 11 หลายเดือนก่อน

      на какой грейд собесились?

    • @mtg2844
      @mtg2844 11 หลายเดือนก่อน

      @@user-gw2xs4zm4r на джуна

  • @psergeev77
    @psergeev77 4 หลายเดือนก่อน +1

    спасибо!

  • @romanovichihin2429
    @romanovichihin2429 10 หลายเดือนก่อน +1

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

  • @user-ti7wk4qt6s
    @user-ti7wk4qt6s 4 หลายเดือนก่อน +1

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

    • @shurik_codes
      @shurik_codes  4 หลายเดือนก่อน

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

  • @gnori
    @gnori ปีที่แล้ว

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

  • @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 и обращаться к "своим" методам через прокси, получаемого из контекста. Либо использовать другие виды связывания.

  • @great_patriarch1459
    @great_patriarch1459 ปีที่แล้ว

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

    • @shurik_codes
      @shurik_codes  ปีที่แล้ว

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

    • @shurik_codes
      @shurik_codes  ปีที่แล้ว +1

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

  • @user-zz4ld4mx3r
    @user-zz4ld4mx3r 3 หลายเดือนก่อน +1

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

    • @shurik_codes
      @shurik_codes  3 หลายเดือนก่อน

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

  • @tusman4ik
    @tusman4ik 7 หลายเดือนก่อน

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

    • @shurik_codes
      @shurik_codes  7 หลายเดือนก่อน

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

    • @tusman4ik
      @tusman4ik 7 หลายเดือนก่อน

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

  • @iKorvik
    @iKorvik 4 หลายเดือนก่อน +1

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

    • @shurik_codes
      @shurik_codes  4 หลายเดือนก่อน

      Возможно

  • @user-er9yu9xp1r
    @user-er9yu9xp1r 2 หลายเดือนก่อน

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

    • @shurik_codes
      @shurik_codes  2 หลายเดือนก่อน

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

    • @user-er9yu9xp1r
      @user-er9yu9xp1r 2 หลายเดือนก่อน

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