Sobes.tech
Junior — Middle
97

Ao usar @RestController, uma nova instância do serviço é criada para cada pedido HTTP ou é usado o mesmo objeto?

Empresas quando solicitadas
СБЕРСБЕР

Resposta da IA

sobes.tech IA

При использовании аннотации @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 — синглтоны, один экземпляр на всё приложение.