Spring MVC로 RESTful API를 구현해보겠습니다.
Spring자체가 Layered Architecture를 기본적으로 지원하고 있습니다.
@Controller 사용
@Controller
Client에서 요청이 들어오면 가장 먼저 받아들이는 부분이 Controller입니다.
Spring에서는 Controller 어노테이션을 통해 지정합니다. (@Controller)
이 어노테이션은 class를 component로 만들어줍니다. component는 spring container위에 로딩되는 객체입니다.
이 component는 자동적으로 spring에서 관리됩니다.
상단의 이미지의 IndexController라는 class는 어떠한 것도 상속받지 않은 POJO입니다.
Controller안에서는 method를 만듭니다.
@RequestMapping(value="/", RequestMethod.GET)
Spring 은 요청 url, method 방식에 매핑되는 method가 있을 때 이를 수행하게 됩니다.
@ResponseBody
return하는 코드가 별도 가공 없이 client측에 응답으로 넘어가게 됩니다.
@RestController 와 @X-Mapping 사용
@GetMapping("/")
@PostMapping("/")
스프링 4.3 이후에 쓸 수 있는 것으로 method와 융합하여 사용합니다.
@RestController
Controller, ResponseBody가 합쳐진 형태입니다.
Restful API는 일반 웹 서비스와 달리 대부분이 응답되는 내용이 data만 응답되며 이 data는 JSON 형태입니다.
따라서 Restful API 서비스에 적합한 Controller입니다.
응답되는 내용을 JSON 형태로 바꾸어서 전달해줍니다.
return 시 Java Object로 return하게 되면, Object와 JSON이 형태가 동일하기 때문에 자동 type변환이 일어나 JSON으로 변환되어 return 됩니다.
Layered Architecture 특징
구조(MVC패턴을 이용한 형태)
- 프레젠테이션 영역: 요청을 해석하고 비즈니스 레이어를 호출하며 최종적으로 만들어진 데이터에 대해 응답을 실행합니다. Controller의 역할.
- 비즈니스 영역: @Service, 외부 데이터를 실제 조회하는 역할은 하지 않고 이 역할은 DAO에 넘깁니다.
- 데이터 영역: DAO.
컴포넌트 자동 등록
@Controller, @service, @Repository 어노테이션을 통해 각각의 역할에 전담 가능합니다.
@Autowired: dependency injection과 관련있습니다. Contoller, Service, Repository 가 각각 인접한 서로를 호출할 수 있습니다. 각각의 depency관계를 갖게되는데 이를 Autowired라는 Annotation으로 적용할 수 있습니다.
'Java > Spring Framework' 카테고리의 다른 글
RESTful API 웹서비스 테스트 (0) | 2020.03.11 |
---|---|
REST에서 CRUD 구현 (0) | 2020.03.06 |
Spring 개발 환경 설정 (0) | 2020.03.03 |
Framework란 2 -Spring boot 기초 (0) | 2020.03.03 |
Framework란 (0) | 2020.01.06 |