No video

Когда ломается магия фреймворков...

Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.
Всё это из-за того, что магия фреймворков иногда ломается, и делает это очень неочевидно.
#java #spring

Пікірлер: 13

  • @Edu-wi3il
    @Edu-wi3il10 ай бұрын

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

  • @shurik_codes

    @shurik_codes

    10 ай бұрын

    Как-нибудь продемонстрирую)

  • @SergeyBaranov_ru
    @SergeyBaranov_ru9 ай бұрын

    Спасибо! Всегда приятно встретить единомышленника

  • @user-ds1ts6bv1d
    @user-ds1ts6bv1d Жыл бұрын

    Александр, спасибо за ваши видео! Продолжайте в том-же духе!

  • @alexshutov5442
    @alexshutov5442 Жыл бұрын

    В поддержку. Продолжай пожалуйста дальше)

  • @user-br4gt7xu2j
    @user-br4gt7xu2j8 ай бұрын

    нет ничего странного, просто разобраться стоит.. 1) твой прокси как по-твоему должен создаваться, если ты класс финализируешь? ни один метод теперь не переопределить, соответственно не будет работать аспект. То же самое будет, если ты просто метод файнал сделаешь 2) когда ты активируешь proxy-target-class=false, то тем самым заставляешь спринг создавать все прокси через механизм JDK dynamic proxy, а не через CGLIB, а это возможно только, когда у класса, который проксируется есть хотя бы один интерфейс, а у некоторых проксируемых служебных классов, подтягиваемых караваном, их нет, из-за чего и ломается работа нового спринг бута при активации этой древней настройки

  • @shurik_codes

    @shurik_codes

    8 ай бұрын

    1. Элементарно - через интерфейс, я для того и отключаю использование CGLIB, чтобы прокси класс реализовывал GreetingsService и внутри делегировал вызовы его реализации (а не расширял её), которая может быть финальной или иметь финальные методы, и это абсолютно нормальная ситуация. Более того, всё нормально работает, за исключением отсутствия возможности повестить дополнительные адвайсы на методы введённого интерфейса. 2. Особенности поведения АОП Spring Boot, как оказалось, связаны с JDK 16+, и присутствуют даже при использовании CGLIB. К тому же в документации Spring Framework отсутствует какая-либо информация, которая мотивировала бы использовать CGLIB, следовательно всё должно работать как с JDK Dynamic Proxy, так и с CGLIB с поправкой на финальные классы/методы.

  • @romanovichihin2429
    @romanovichihin242911 ай бұрын

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

  • @user-by4qc4lj3n
    @user-by4qc4lj3n7 ай бұрын

    Спасибо за качественный материал в целом и АОП в частности. Вопрос такой, а почему вы финалите все классы, если был ответ в каком то видео, то можно ссылку?

  • @shurik_codes

    @shurik_codes

    7 ай бұрын

    Привычка, я финалю все классы, которые не собираюсь расширять. Но мне равится обоснование Егора Бугаенко: www.yegor256.com/2014/11/20/seven-virtues-of-good-object.html#7-his-class-is-either-final-or-abstract

  • @olegoleg6772
    @olegoleg677210 ай бұрын

    В логах - Саня, верни косарь ))))))

  • @keviny0ung
    @keviny0ung Жыл бұрын

    Отлично видео! Скажите, пожалуйста, характеристики вашего ПК =)

  • @shurik_codes

    @shurik_codes

    Жыл бұрын

    5950X, 64Gb RAM Nvme SSD, остальное не столь важно для работы