Может ли 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 для этих классов.

Другие вопросы по тегам