BeanPostProcessor vs (@PostConstruct» and «@PreDestroy»)

121
28 ноября 2019, 05:00

BeanPostProcessor дает возможность подключиться к жизненному циклу бина и взаимодействовать с ним по мере его обработки, а именно с помощью двух переопределенных методов дает возможность добавить какую-то логику после создания бина (но до его возвращения объекту) и перед уничтожением бина. @PostConstruct» and «@PreDestroy» делают ведь тоже самое.

Вопрос - в чем разница их использования и в каких ситуациях лучше использовать эти аннотации?

Answer 1

Вы реализуете BeanPostProcessor для создания службы, которая применяется ко всем beans в контексте по мере их создания. JavaDocs показывает много конкретных примеров (AutowiredAnnotationBeanPostProcessor). Это средство наиболее полезно при создании собственной структуры поверх Spring или функций, которые применяются к подмножеству многих beans (например, создания своих аннотаций, которые будут работать в контексте спринга). Скорее всего, вы будете использовать существующие bean постпроцессоры, которые Spring предоставляет, но если по каким-то причинам вам нужно добавить свои тогда в этом поможет BeanPostProcessor. Кроме того, аргументами методов BeanPostProcessor, есть Object bean, String beanName и вы работаете с бином на немного ниже уровне, чем просто с полями экземпляра.

В то время как @PostConstruct и @PreDestroy это фактически спринговый декоратор для ваших экземпляров класса (объектов). Например: записать какие-то данные о состоянии объекта на момент удаления в лог-файл.

READ ALSO
Не выполняется запрос через HQL ( Hibernate )

Не выполняется запрос через HQL ( Hibernate )

У меня есть база данныхЯ к ней подключился из IDEA

112
Ошибка при попытке запуска кода через maven

Ошибка при попытке запуска кода через maven

Заранее предупреждаю, очень много букв

149
LinkedHashMap - неконтролируемое переприсваивание

LinkedHashMap - неконтролируемое переприсваивание

Делаю подобие бд в виде LinkedHashMapПри попытке изменить юзеру параметр, он меняется у всех юзеров

117
Трансформирование элемента с помощью css transform (rotate) и его финальное положение на странице

Трансформирование элемента с помощью css transform (rotate) и его финальное положение на странице

При трансформировании элемента, например, повороте на 90%, элемент поворачивается от своего центра

117