Spring middle
В чём разница: AOP: JDK proxy vs CGLIB?
Ответ
JDK dynamic proxy — если бин реализует интерфейс (через Proxy.newProxyInstance). CGLIB — наследование от класса (final-классы нельзя проксировать). Spring Boot 3 по умолчанию использует CGLIB.
Разбор: JDK dynamic proxy работает через интерфейсы (Proxy.newProxyInstance), CGLIB — через наследование от целевого класса, поэтому final-классы и final-методы CGLIB проксировать не может. Spring Boot по умолчанию использует CGLIB (proxyTargetClass=true). Ловушки: именно CGLIB не работает с final, а не JDK; JDK не создаёт наследников, а CGLIB не реализует интерфейсы; проксирование при наличии аспектов включено по умолчанию.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.