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 — разные экземпляры
}
Используется, когда нужен новый экземпляр бина для каждого запроса, например, для хранения состояния, специфичного для конкретной операции.