Каков жизненный цикл spring bean?

Я смущен жизненным циклом весны.

XmlBeanFactory beanFactory 
= new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));

создает ли вышеуказанный фрагмент кода объект или нет?

если приведенный выше ответ верен.

a) тогда для компонента, где область действия "singleton", получите объект, который был создан во время приведенного выше фрагмента кода. Прав я или нет?

b) для случая, когда область видимости является "прототипом", был ли созданный объект неиспользуемым. Потому что контейнер всегда возвращает новый объект.

XmlBeanFactory beanFactory 
= new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));

создает ли вышеуказанный фрагмент кода объект или нет?

если ответ false, то

как Spring framework проверяет правильность определения компонента или нет.

From the answer of Henry

Usually, singleton beans are created when the context starts. This can be changed with the lazy-init or default-lazy-init attributes.

Prototype beans are only created when needed.

Only syntactically, there might still be errors when the bean is instantiated, for example if a required property is not provided.

2 ответов


BeanFactory не создает предварительно экземпляры синглетов при запуске, как ApplicationContext делает. Поэтому, даже если ваш Боб не ленивый и одноэлементный, он не будет создан.

prototype бобы создаются по требованию, каждый раз, когда вы просите прототип Боба вы получите новый экземпляр. Но как только такой Боб был использован во время autowiring, тот же экземпляр будет использоваться навсегда.

С ApplicationContext все синглеты создаются охотно и прототипы бобов только по требованию.

посмотреть также


обычно одноэлементные бобы создаются при запуске контекста. Это можно изменить с помощью lazy-init или default-lazy-init атрибуты.

прототипы бобов создаются только при необходимости.