코드 3-1의 두 번째 @RequestMapping 애너테이션을 클래스 또는 메서드용 애너테이션으로 사용자에게 노출할 서비스의 HTTP 엔드포인트를 스프링 컨테이너에 지정한다. @RequestMapping을 클래스에 사용하면 컨트롤러가 노출하는 모든 엔드포인트의 최상위(root) URL을 설정할 수 있다. @RequestMapping(value="v1/organization/{organizationId}/license")의 value 속성으로 Controller 클래스에서 노출되는 모든 엔드포인트에 대한 최상위 URL을 설정한다. 따라서 이 클래스에서 노출된 모든 서비스의 엔드포인트를 최상위 엔드포인트인 /v1/organizations/{organizationId}/licenses에서 시작한다. {organizationId}는 모든 호출에서 전달된 organizationId가 매개변수화되는 방식을 표시한다. URL에 organizationId를 사용하면 서비스를 사용할 수 있는 고객을 구분할 수 있다. 컨트롤러에 첫 메서드를 추가하기 전에 만들려는 서비스에서 사용될 모델 및 서비스 클래스를 살펴보자. 코드 3-2는 라이선스 데이터를 은닉하는 POJO 클래스를 보여 준다.
Note ≣
캡슐화(정보 은닉)는 객체지향 프로그래밍의 주요 원칙 중 하나로 자바에서 캡슐화하려면 클래스 변수를 private로 선언한 후 public getter와 setter를 제공하여 그 변수 값을 읽고 쓸 수 있도록 해야 한다.