Встречается на собеседованиях • сегодня

В чем разница между init() в бинах Singleton и Prototype

Singleton
init() вызывается один раз при создании бина (при старте приложения или при первом обращении, если lazy-init). Так как бин один, метод выполнится единожды.

Prototype
init() вызывается при каждом создании нового экземпляра бина. Поскольку Prototype создает новый объект при каждом запросе, init() будет вызываться каждый раз.

Пример:

java
@Component
@Scope("prototype")
public class PrototypeBean {
    @PostConstruct
    public void init() {
        System.out.println("Prototype init");
    }
}

@Component
public class SingletonBean {
    @PostConstruct
    public void init() {
        System.out.println("Singleton init");
    }
}

Для Singleton init() выведется один раз, для Prototype — при каждом getBean() или инжекте.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы