Выбор ответа Middle AOP и прокси обновлено

JDK-прокси и CGLIB

Вопрос

Какое утверждение про прокси в Spring Boot 3 верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: По умолчанию CGLIB, даже если бин реализует интерфейсы. Boot выставляет spring.aop.proxy-target-class=true, поэтому создаётся подкласс через CGLIB, и бин можно внедрять и по классу, и по интерфейсу.

Варианты ответа

  1. По умолчанию всегда JDK dynamic proxy, если у бина есть интерфейс
  2. JDK-прокси умеет перехватывать методы, которых нет в интерфейсе
  3. CGLIB работает только с классами без конструкторов с параметрами
  4. По умолчанию CGLIB, даже если бин реализует интерфейсыправильный ответ

Разбор

Boot выставляет spring.aop.proxy-target-class=true, поэтому создаётся подкласс через CGLIB, и бин можно внедрять и по классу, и по интерфейсу. JDK dynamic proxy реализует только интерфейсы, методы класса вне интерфейса через него не вызвать. CGLIB (через Objenesis) создаёт прокси и для классов с конструкторами с параметрами.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме