Подтвердить что ты не робот

Когда используется spring bean

ApplicationContext ctx = new ClassPathXmlApplicationContext(
    "com/springinaction/springidol/spring-idol.xml");
Performer performer = (Performer) ctx.getBean("duke");
performer.perform();

В приведенном выше примере, когда создаются beans, когда создается ApplicationContext или когда вызывается getBean()?

4b9b3361

Ответ 1

Предполагая, что bean является одноэлементным и не настроен для ленивой инициализации, он создается при запуске контекста. getBean() просто выдает его.

Lazy-init beans будет инициализироваться только при первом обращении, но это не значение по умолчанию. Области beans (например, область с прототипом) также создаются только при первом упоминании.

Ответ 2

Согласно Spring документации,

Поведение по умолчанию для реализаций ApplicationContext заключается в том, чтобы с нетерпением предварительно создать все синглтон beans при запуске.

Кроме того, вы можете установить их для загрузки лениво.

Ответ 3

Для справки см.

Здесь приводится краткое описание того, когда beans:

  • Синтаксис bean (который является областью по умолчанию), который не имеет свойства lazy-init, установленного в true (по умолчанию false), создается при создании контекста приложения.
  • Синтаксис bean, который имеет свойство lazy-init, установленное в true, создается при первом запросе
  • A bean, установленный в любой другой области, создается при первом запросе (для этой области).

Ответ 4

  • По умолчанию все beans являются одиночными, поэтому всякий раз, когда создается контекст приложения, все они предварительно загружаются. Если, в частности, любой singleton bean имеет атрибут lazy-init = "true", он будет лениво загружен, т.е. Будет создан, когда метод getBean вызывается в первый раз.

  • В других областях beans будет создаваться при каждом запросе.

Ответ 5

По умолчанию он создается при запуске контекста, но порядок зависит от зависимостей. Если у нас есть следующие классы:

@Component
public  class A{

}

@Component
public class B{
    @Autowired
    A a;

}

Класс A будет создан до класса B, потому что класс B зависит от класса A.

Ответ 6

По умолчанию Spring ApplicationContext с готовностью создает и инициализирует все "одноэлементные" bean-компоненты во время самого запуска приложения. ApplicationContext делает компонент доступным в BeanFactory. getBean() возвращает экземпляр компонента.