Назад к вопросам
СБЕР
Junior — Middle
64
При использовании @RestController создается новый экземпляр сервиса для каждого HTTP-запроса или используется один и тот же объект?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
При использовании аннотации @RestController в Spring Boot сервисы, как правило, являются синглтонами по умолчанию. Это значит, что для каждого HTTP-запроса не создаётся новый экземпляр контроллера или сервиса, а используется один и тот же объект.
Spring управляет жизненным циклом бинов и по умолчанию создает их как синглтоны, что повышает производительность и экономит ресурсы.
Если требуется создать новый экземпляр на каждый запрос, можно изменить область видимости бина, например, с помощью аннотации @Scope("request").
Пример:
@Service
public class MyService {
// сервис синглтон по умолчанию
}
@RestController
public class MyController {
private final MyService myService;
public MyController(MyService myService) {
this.myService = myService;
}
@GetMapping("/hello")
public String hello() {
return "Hello";
}
}
Здесь MyService и MyController — синглтоны, один экземпляр на всё приложение.