Может ли Spring init Bean (Factory) PostProcessor лениво? - PullRequest
0 голосов
/ 12 ноября 2018

Кто-нибудь может мне это объяснить? После прочтения документации я не понял.

Может ли Spring init Bean (Factory) PostProcessor лениво или нет?

https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-extension-factory-postprocessors

Есть такой блок, который меня смущает:

Как и в случае BeanPostProcessors, вы обычно не хотите настраивать BeanFactoryPostProcessors для отложенной инициализации. Если ни один другой компонент не ссылается на Bean (Factory) PostProcessor, этот постпроцессор вообще не будет создан. Таким образом, маркировка для отложенной инициализации будет проигнорирована, и экземпляр BePro (Factory) PostProcessor будет создан с энтузиазмом даже в том случае, если для атрибута default-lazy-init установлено значение true при объявлении вашего элемента.

1 Ответ

0 голосов
/ 13 ноября 2018

Правильный ответ на вопрос: «Может ли 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;
    }
}

И запустил приложение Spring.Итак, в консоли было напечатано: «bean factory» и несколько раз «перед init», хотя я поместил аннотацию @Lazy для этих классов.

...