Назад к вопросам
Junior — Middle
73
Какими методами можно получить новый экземпляр компонента, настроенного по шаблону prototype, в контексте Spring или аналогичных фреймворков?
Компании, где спрашивали
Ви6 Сервисес
Ответ от нейросети
sobes.tech AI
В Spring для получения нового экземпляра компонента с шаблоном prototype можно использовать несколько подходов:
-
Аннотация @Scope("prototype") — при объявлении бина с таким скоупом Spring будет создавать новый объект при каждом запросе из контекста.
-
ApplicationContext.getBean() — каждый вызов этого метода для prototype-бина возвращает новый экземпляр.
-
ObjectFactory или Provider — внедрить в singleton-компонент фабрику, которая при вызове будет возвращать новый prototype-объект:
@Component
@Scope("prototype")
public class MyPrototypeBean { }
@Component
public class SingletonBean {
private final ObjectFactory<MyPrototypeBean> prototypeFactory;
public SingletonBean(ObjectFactory<MyPrototypeBean> prototypeFactory) {
this.prototypeFactory = prototypeFactory;
}
public void usePrototype() {
MyPrototypeBean prototype = prototypeFactory.getObject();
// использовать prototype
}
}
- Lookup method injection — аннотировать метод в singleton-бине как
@Lookup, чтобы Spring подменял его реализацию и возвращал новый prototype-экземпляр.
Таким образом, ключевой момент — prototype-бин создаётся заново при каждом запросе из контекста, и для доступа к нему из singleton-компонентов используют фабрики или lookup-инъекции.