Встречается на собеседованиях • сегодня
В чем разница между 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 — работа с готовыми экземплярами.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы