Что подразумевается под «существует тип Spring прокси, который может заменить объект, возвращаемый методом»? - PullRequest
0 голосов
/ 06 октября 2019

Я провожу фиктивный экзамен, на котором я не совсем понял один из ответов, в котором не было объяснения, почему он был правильным.

(отредактировано здесь внизу kriegaex, добавив вопросиз комментария ниже и некоторого форматирования и перефразирования, чтобы сделать текст немного более связным и читабельным.)

  • Вопрос:"Какое из следующих утверждений верно в отношенииПрокси-функция Spring? "
  • Ответ: " Существует тип прокси Spring, который может заменить объект, возвращаемый методом. "

Я понимаючто Spring AOP может использовать два типа прокси:

  • JDK динамические прокси
  • CGLIB прокси

В моем понимании это два типа прокси, которыеинтенсивно используются весной. Например, при использовании @Transactional или при создании аспектов (@Aspect).

Что я понимаю из данного ответа, так это то, что они указывают на аспект @Around. Тем не менее, я не понимаю, почему они называют это «типом Spring прокси». Является ли аспект прокси? Таким образом, мое понимание аспекта, использующего JDK или прокси CGLIB, неверно?

1 Ответ

1 голос
/ 06 октября 2019

Этот вопрос было бы легче понять, если бы вы предоставили все возможные ответы, в том числе и неправильные. Но, учитывая правильный (который действительно звучит странно), я могу сказать вам следующее:

  • И прокси-серверы JDK и CGLIB служат одной и той же цели: обернуть и заменить исходные объекты, чтобывозможность регистрации некоторых перехватчиков в вызовах их методов, будь то через Spring AOP или другие методы.
  • Да, оба типа прокси широко используются в Spring, JDK-прокси для классов, реализующих интерфейсы, CGLIB-прокси для классов, не реализующих какие-либоинтерфейсы. При желании вы можете настроить Spring на использование прокси-серверов CGLIB также для типов интерфейсов.
  • Не существует такого понятия, как "@Around аспект", только тип рекомендации @Around (помимо других типов рекомендаций, таких как, например, @Before и @After).
  • Нет, аспект не является прокси. Но Spring AOP использует прокси-серверы для реализации своего способа выполнения AOP через шаблон делегирования, в отличие от AspectJ, который не использует прокси-серверы, но использует прямое инструментирование байт-кода для достижения своей цели.

Найти дополнительную информациюв весенней документации.

...