Встречается на собеседованиях • сегодня

В чем разница между BeanFactoryPostProcessor и BeanPostProcessor в Spring

BeanFactoryPostProcessor и BeanPostProcessor — это интерфейсы Spring для модификации контекста приложения, но работают на разных этапах.

BeanFactoryPostProcessor:

  • Работает с метаданными бинов до их создания.
  • Может изменять конфигурацию (BeanDefinition), например, свойства или scope.
  • Пример: PropertySourcesPlaceholderConfigurer для подстановки значений из properties-файлов.
java
@Component
public class CustomBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
        BeanDefinition bd = beanFactory.getBeanDefinition("myBean");
        bd.setScope(ConfigurableBeanFactory.SCOPE_PROTOTYPE);
    }
}

BeanPostProcessor:

  • Работает с экземплярами бинов после их создания (но до инициализации/после).
  • Может модифицировать или обернуть бин (например, для проксирования).
  • Пример: AutowiredAnnotationBeanPostProcessor для внедрения зависимостей.
java
@Component
public class CustomBeanPostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) {
        if (bean instanceof MyService) {
            // Логика до init-метода
        }
        return bean;
    }
}

Ключевое отличие:
BeanFactoryPostProcessor — настройка метаданных бинов, BeanPostProcessor — работа с готовыми экземплярами.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы