No video
Когда ломается магия фреймворков...
Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.
Всё это из-за того, что магия фреймворков иногда ломается, и делает это очень неочевидно.
#java #spring
Пікірлер: 13
Было бы интересно увидеть пример задачи, которая решена через AOP, и с другой стороны через шаблоны, а также плюсы и минусы каждого из подходов. Спасибо за полезное видео!
@shurik_codes
10 ай бұрын
Как-нибудь продемонстрирую)
Спасибо! Всегда приятно встретить единомышленника
Александр, спасибо за ваши видео! Продолжайте в том-же духе!
В поддержку. Продолжай пожалуйста дальше)
нет ничего странного, просто разобраться стоит.. 1) твой прокси как по-твоему должен создаваться, если ты класс финализируешь? ни один метод теперь не переопределить, соответственно не будет работать аспект. То же самое будет, если ты просто метод файнал сделаешь 2) когда ты активируешь proxy-target-class=false, то тем самым заставляешь спринг создавать все прокси через механизм JDK dynamic proxy, а не через CGLIB, а это возможно только, когда у класса, который проксируется есть хотя бы один интерфейс, а у некоторых проксируемых служебных классов, подтягиваемых караваном, их нет, из-за чего и ломается работа нового спринг бута при активации этой древней настройки
@shurik_codes
8 ай бұрын
1. Элементарно - через интерфейс, я для того и отключаю использование CGLIB, чтобы прокси класс реализовывал GreetingsService и внутри делегировал вызовы его реализации (а не расширял её), которая может быть финальной или иметь финальные методы, и это абсолютно нормальная ситуация. Более того, всё нормально работает, за исключением отсутствия возможности повестить дополнительные адвайсы на методы введённого интерфейса. 2. Особенности поведения АОП Spring Boot, как оказалось, связаны с JDK 16+, и присутствуют даже при использовании CGLIB. К тому же в документации Spring Framework отсутствует какая-либо информация, которая мотивировала бы использовать CGLIB, следовательно всё должно работать как с JDK Dynamic Proxy, так и с CGLIB с поправкой на финальные классы/методы.
лайк, коммент, некст!
Спасибо за качественный материал в целом и АОП в частности. Вопрос такой, а почему вы финалите все классы, если был ответ в каком то видео, то можно ссылку?
@shurik_codes
7 ай бұрын
Привычка, я финалю все классы, которые не собираюсь расширять. Но мне равится обоснование Егора Бугаенко: www.yegor256.com/2014/11/20/seven-virtues-of-good-object.html#7-his-class-is-either-final-or-abstract
В логах - Саня, верни косарь ))))))
Отлично видео! Скажите, пожалуйста, характеристики вашего ПК =)
@shurik_codes
Жыл бұрын
5950X, 64Gb RAM Nvme SSD, остальное не столь важно для работы