АОП в 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
Спасибо за труд!
Отличное видео, освежил знания по АОП. Помню использовал его в своем пет проекте и настраивал через XML.
Огромное тебе спасибо за такое классное обьяснение и ввод в тему Spring АОП.
Пожалуйста, продолжай свое дело! У тебя очень хорошо получается.
Тарантино вещает 😂🤙
Супер, Тарантино снова снял шедевр)
Спасибо за ролик, было бы крайне полезно разобрать управление транзакциями в Spring
Очень круто, один из немногих настолько подробных роликов на ютубе по теме АОП
Когда искал гайд по АОР через поиск этого видео мне не выдало. А вот в пекомендациях через неделю - чего нет...
Хочется поставить 10000 лайков) спасибо огромное за ролик, очень интересно!
Очередное видео, которое посмотрел с большим удовольствием. Краткость сестра таланта (с). Минимальный и достаточный набор для самостоятельного движения. Жаль что не было подобного видео, когда сам погружался в эту тему. И да, под капотом много странных эффектов. Применять нужно аккуратно и с проверкой.
Лучший по обучению на java!
Смотрю тебя, для подготовки на первое собеседование
Шикарно, Спасибо Саша! AOP кстати используется для кастомизации аллюр отчетов. так что автотестерам тоже полезно)
Пушка. Спасибо за материал)
Это кайф, спасибо большое!
Молодец, очень доходчиво разложил!
Хорошее видео, спасибо!
Спасибо! Максимально приятно слушать на столько детальные объяснения
Охрененные видео 🔥🔥🔥🔥🔥
Спасибо, шикарное объяснение👀
Какой позитив. Браво!!!
Обожаю твои видео!
Саша как реклама которая следит за мной, только сегодня на собеседовании плохо ответил про АОП и думал подучить нормально, а тут бац и ролик, значит суждено выучить)
на какой грейд собесились?
@@user-gw2xs4zm4r на джуна
спасибо!
лайк, коммент, некст!
Как в случаем с видео про @Transactional тут также освещается очень редкая (в плане обучающих материалов), но популярная на собсесах и в жизни тема. Снова на высоте, полный восторг. Спасибо за проделанную работу! P.S. будет ли видео про batch или про брокеры сообщений? (какие-нибудь интересные кейсы с кафкой/рэбитом)
Про очереди сообщений видео будут, да
Емае, какой же качественный материал о АОП. Готов поспорить, за маской Саши скрывается Sam Brannen)
Можно ещё как в дополнение кроме Spring AOP ещё и про AspectJ рассказать по-подробней. Он расширенный ф-л предоставляет за счёт использование внутри либы ASM и использования своего языка, не аннотированный spring стиль.
К примеру, часто бывает нужно чтобы аннотации триггерились и на методах, которые и когда вызываются внутри другого метода, не смотря на то что они оба публичны (тут проблема проксирования от Spring-а встаёт) или проблема работы с не публичными метода в Spring AOP
Возможно когда-нибудь расскажу и про AspectJ, но планов и так очень много, а тема AspectJ мне кажется не очень востребованной. Хотя признаю, что AspectJ - невероятно мощный и полезный инструмент.
>> не аннотированный spring стиль
А это и не Spring-стиль, скорее даже наоборот - аннотации появились в AspectJ 5 аж в 2003-2004 году)
>> аннотации триггерились и на методах, которые и когда вызываются внутри другого метода
Это проблема динамического связывания в целом, так как перехватывает вызовы прокси-объект, о существовании которого целевой объект не знает. Целевой объект обращается к самому себе напрямую, минуя прокси. Чтобы перехватывать внутренние вызовы, нужно нагородить костылей с внедрением ссылки на прокси в целевой объект, либо внедрить контекст Spring и обращаться к "своим" методам через прокси, получаемого из контекста. Либо использовать другие виды связывания.
А при использовании каких ещё аннотаций из часто использованных используется прокси? Кроме Configuration
Не понял сути вопроса)
После уточнения от @enjoyit8499 понял о чём речь. На самом деле в Sprung Framework и его экосистеме много чего основано на АОП и динамическом проксировании. И @Transactional, и @Cachable, и @PreAuthorize/@PostAuthorize и т.д.
Видео понравилось, а есть ссылка на код из видео?
К сожалению нет
Можно ли ссылочку на ваш гитхаб? Как начинающему разрабу, очень хочется почитать чужой код. Спасибо!
github.com/alex-kosarev но там код красотой не блещет)
@@shurik_codes огромное вам спасибо!)
Всё-таки лучше не пытаться переводить какие-то названия методов или ещё чего
Возможно
А можно ли создать Pointcut для того чтобы фильтровать методы в которых есть именно параметры, аннотированные какой-нибудь аннотацией, к примеру @RequestBody?
Конечно можно
@@shurik_codes 2 раза пересмотрел видео и не нашел ответа, только указание параметров типы которых отмечены аннотацией или просто здесь это не рассматривалось?