Выбор ответа Middle AOP и прокси обновлено
JDK-прокси и CGLIB
Вопрос
Какое утверждение про прокси в Spring Boot 3 верно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: По умолчанию CGLIB, даже если бин реализует интерфейсы. Boot выставляет spring.aop.proxy-target-class=true, поэтому создаётся подкласс через CGLIB, и бин можно внедрять и по классу, и по интерфейсу.
Варианты ответа
- По умолчанию всегда JDK dynamic proxy, если у бина есть интерфейс
- JDK-прокси умеет перехватывать методы, которых нет в интерфейсе
- CGLIB работает только с классами без конструкторов с параметрами
- По умолчанию CGLIB, даже если бин реализует интерфейсыправильный ответ
Разбор
Boot выставляет spring.aop.proxy-target-class=true, поэтому создаётся подкласс через CGLIB, и бин можно внедрять и по классу, и по интерфейсу. JDK dynamic proxy реализует только интерфейсы, методы класса вне интерфейса через него не вызвать. CGLIB (через Objenesis) создаёт прокси и для классов с конструкторами с параметрами.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Внедрение по классу при JDK-прокси
Следующий вопрос
Вид advice и когда он выполняется