Ответ
Нет. Как и все Spring-бины, класс, аннотированный @RestController, по умолчанию имеет область видимости Singleton. Это означает, что в контексте приложения существует только один экземпляр этого контроллера, который обслуживает все входящие запросы.
Почему это важно:
- Эффективность: Singleton экономит память и время на создание объектов.
- Безопасность: Контроллеры обычно не должны хранить состояние запроса (state). Состояние должно передаваться через параметры методов, сессии или отдельные сервисы с соответствующей областью видимости (например,
@RequestScope).
Как сделать Prototype? Если по какой-то особой причине требуется новый экземпляр на запрос, можно явно указать область видимости prototype:
@RestController
@Scope("prototype")
public class MyController {
// Теперь для каждого запроса будет создан новый экземпляр
}
Однако такая необходимость возникает крайне редко и часто указывает на проблему с дизайном.