ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • @RestController, produces, subscribeOn
    [공부] 프로그래밍/Spring・Spring Boot (JAVA) 2023. 4. 19. 22:26
    반응형

     

    @RestController

     
    Spring Framework에서 제공하는 어노테이션 중 하나로, RESTful 웹 서비스를 개발할 때 사용된다. @RestController 어노테이션이 붙은 클래스는, HTTP 요청을 처리하고, JSON, XML 등의 데이터를 반환하는 RESTful API를 개발할 수 있다. 이때, @RestController 어노테이션은 @Controller 어노테이션과 @ResponseBody 어노테이션을 합친 것과 같은 역할을 수행한다.
     

    @RestController
    @RequestMapping("/api")
    public class MyRestController {
    
        @GetMapping("/hello")
        public String hello() {
            return "Hello, World!";
        }
    
        @GetMapping("/greet/{name}")
        public String greet(@PathVariable String name) {
            return "Hello, " + name + "!";
        }
    
    }

     
    위 코드에서 @RestController 어노테이션이 붙은 MyRestController 클래스는, "/api" 경로를 사용하는 RESTful API를 개발한다. @GetMapping 어노테이션을 사용하여 HTTP GET 요청에 대한 메서드를 정의하고, @PathVariable 어노테이션을 사용하여 경로 변수를 처리한다. 따라서, "/api/hello" 경로로 GET 요청을 보내면 "Hello, World!"라는 응답을 반환하고, "/api/greet/{name}" 경로로 GET 요청을 보내면 "Hello, {name}!"라는 응답을 반환한다.
     

    produces = MediaType.TEXT_EVENT_STREAM_VALUE

     
    produces는 Spring Framework에서 제공하는 @RequestMapping 어노테이션의 속성 중 하나로, 클라이언트 요청에 대한 응답 데이터의 MIME 타입을 지정한다. "MediaType"는 Spring Framework에서 제공하는 클래스로, HTTP 요청 및 응답에 사용되는 미디어 타입을 지정한다. MediaType.TEXT_EVENT_STREAM_VALUE는 Server-Sent Events 방식으로 데이터를 전송하는 데 사용되는 MIME 타입이다. 즉, 위 코드에서 "produces" 속성에 MediaType.TEXT_EVENT_STREAM_VALUE 값을 지정함으로써, 해당 RESTful API에서 반환되는 데이터의 MIME 타입이 Server-Sent Events 방식으로 지정된다. 이를 통해 클라이언트가 해당 API를 호출할 때, 받게 될 데이터의 형식을 미리 알 수 있다.
     

    @GetMapping(value = "/sender/{sender}/receiver/{receiver}", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
        public Flux<Chat> getMsg(@PathVariable String sender, @PathVariable String receiver) {
            return chatRepository.mFindBySender(sender, receiver)
                    .subscribeOn(Schedulers.boundedElastic());
        }

     
    "subscribeOn" 메서드는 데이터 소스를 구독할 때 사용되며, 이를 통해 Flux 스트림의 모든 요소를 처리하기 위해 동시에 실행될 수 있는 새로운 스레드를 만들 수 있다. 이 경우, "boundedElastic" 스케줄러를 사용하여 새로운 스레드를 생성하며, 이 스케줄러는 적절한 수의 스레드를 생성하여 Flux 스트림 요소를 비동기적으로 처리한다. "boundedElastic" 스케줄러는 Reactor 라이브러리에서 기본으로 제공하는 스케줄러 중 하나로, CPU 코어 수에 비례하여 적절한 수의 스레드를 생성하는 것이 특징이다. 이를 통해 CPU 자원을 최대한 활용하며, 대규모 애플리케이션에서도 일관된 성능을 유지할 수 있다.
     

    반응형

    '[공부] 프로그래밍 > Spring・Spring Boot (JAVA)' 카테고리의 다른 글

    Collections framework  (0) 2023.04.27
    Object 클래스, 제네릭  (0) 2023.04.24
    Flux, @Tailable  (0) 2023.04.14
    @PathVariable  (0) 2023.04.12
    Lombok, Thymeleaf  (0) 2023.04.11
Designed by Tistory.