본문 바로가기

Java/Spring Framework

Spring MVC로 RESTful API 서비스 구현

반응형

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