이 서비스의 컨트롤러 클래스는 src/main/java/com/optimagrowth/license/controller/LicenseController.java에 있다. LicenseController 클래스는 POST, GET, PUT, DELETE 동사에 매핑되는 네 개의 HTTP 엔드포인트를 노출한다.
이 컨트롤러 클래스를 살펴보고, 스프링 부트가 서비스 엔드포인트를 최소한의 노력으로 노출하며 서비스의 비즈니스 로직을 만드는 데 집중할 수 있게 하는 애너테이션을 어떻게 제공하는지 살펴보자. 아직 클래스 메서드가 없는 기본 컨트롤러 클래스 정의부터 시작해 보자. 다음 예제는 O-stock 라이선싱 서비스의 컨트롤러 클래스를 보여 준다.
코드 3-1 LicenseServiceController를 스프링 RestController로 지정하기
package com.optimagrowth.license.controller;
import java.util.Random;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.optimagrowth.license.model.License;
@RestController ➊
@RequestMapping(value="v1/organization/ ➋
{organizationId}/license")
public class LicenseController {
}
➊ 스프링 부트에 이 서비스는 REST 기반 서비스이며, 응답은 JSON으로 서비스 요청 및 자동으로 직렬화 및 역직렬화할 것이라고 지정한다.
➋ 이 클래스의 모든 HTTP 엔드포인트가 /v1/organization/{organizationId}/license에서 시작하도록 노출한다.