Может ли Spring init Bean(Factory)PostProcessor лениво?
Кто-нибудь может мне это объяснить? После прочтения документации я не понял.
Может ли Spring init Bean(Factory)PostProcessor лениво или нет?
https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html
Есть такой блок, который меня смущает:
Как и в случае с BeanPostProcessors, вы обычно не хотите настраивать BeanFactoryPostProcessors для отложенной инициализации. Если никакой другой компонент не ссылается на Bean(Factory)PostProcessor, этот постпроцессор вообще не будет создан. Таким образом, маркировка для отложенной инициализации будет проигнорирована, и экземпляр BePro (Factory) PostProcessor будет создан с энтузиазмом даже в том случае, если для атрибута default-lazy-init установлено значение true в объявлении вашего элемента.
1 ответ
Правильный ответ на вопрос: "Может ли Spring init Bean(Factory)PostProcessor лениво?" это "НЕТ". Я проверил это сам. Я создал 2 класса:
@Lazy
@Component
public class CustomBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
System.out.println("bean factory!");
}
}
а также
@Lazy
@Component
public class CustomBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("before init!");
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
}
И запустить весеннее приложение. Итак, в консоли было напечатано: "bean factory" и несколько раз "перед init", хотя я поместил аннотацию @Lazy для этих классов.