Sobes.tech
Back to questions
Junior — Middle
62

Объясните концепцию прототипов в рамках Spring и как они работают

Companies where asked
Ви6 Сервисес

Answer from AI

sobes.tech AI

В Spring концепция прототипа (scope = "prototype") означает, что каждый раз при запросе бина из контейнера Spring создаётся новый экземпляр этого бина.

Это отличается от синглтона (scope = "singleton"), где создаётся один экземпляр на весь контекст приложения.

Как это работает:

  • При объявлении бина с аннотацией @Scope("prototype") или в конфигурации XML указывается, что бин прототипный.
  • Когда приложение запрашивает такой бин, Spring создает новый объект, инициализирует его и возвращает.
  • Контейнер не управляет жизненным циклом прототипных бинов после их создания, ответственность за их уничтожение лежит на вызывающем коде.

Пример:

@Component
@Scope("prototype")
public class MyPrototypeBean {
    // поля и методы
}

// В другом месте
@Autowired
private ApplicationContext context;

public void example() {
    MyPrototypeBean bean1 = context.getBean(MyPrototypeBean.class);
    MyPrototypeBean bean2 = context.getBean(MyPrototypeBean.class);
    // bean1 и bean2 — разные экземпляры
}

Используется, когда нужен новый экземпляр бина для каждого запроса, например, для хранения состояния, специфичного для конкретной операции.