Как именно обрабатывается аннотация Spring @Lazy?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как именно обрабатывается аннотация Spring @Lazy?

Сообщение Anonymous »


Возьмите добычу. Это BeanPostProcessor, который вставляет строку «мудрости» в поля, помеченные пользовательским @Wisdom. Обратите внимание на аннотацию @Lazy. Я сделал это так, чтобы Spring не жаловался в журналах, что зависимость wisdomProvider не обрабатывается всеми BeanPostProcessor (поскольку это требуется BeanPostProcessor сразу, до создания всех BeanPostProcessor)

@Component @Slf4j публичный класс WisdomBeanPostProcessor реализует BeanPostProcessor { частный окончательный WisdomProvider @Ленивый public WisdomBeanPostProcessor (WisdomProvider мудростипровайдер) { this.wisdomProvider = мудростьПровидер; } @Override public Object postProcessBeforeInitialization (Object bean, String beanName) выдает BeansException { Field[] поля = bean.getClass().getDeclaredFields(); for (Поле поля: поля) { Мудрость мудростьАннотация = field.getAnnotation(Wisdom.class); если (wisdomAnnotation != ноль) { поле.setAccessible(истина); ReflectionUtils.setField(поле, компонент, мудростьПровидер.getWisdom()); log.info("Класс WisdomProvider: " + WisdomProvider.getClass()); // печатает INFO [main]: класс мудрости: class jdk.proxy2.$Proxy36 } } вернуть боб; } } Что мне интересно, так это то, как обрабатывается аннотация @Lazy? Как видите, Spring, как и следовало ожидать, заменяет его каким-то прокси (при отсутствии @Lazy прокси не регистрируется). За прокси отвечает BeanPostProcessor. GPT упомянул некий LazyInitializationBeanPostProcessor, но, похоже, он это только что придумал. Я не смог найти упоминания об этом классе в Интернете (как и в проекте)

Итак, как именно обрабатывается @Lazy (например, каким BeanPostProcessor или BeanFactoryPostProcessor)?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»