본문 바로가기
Develop/Spring

[Spring] Spring MVC 로 RESTFul 서비스 개발하기 (2)

by 코딩의성지 2020. 3. 22.

하이 ~~ 지난 포스팅에서 Spring 작업환경을 세팅하고, Controller에서 url 을 받아서 처리하는걸 포스팅했었다.

 

지난 포스팅 링크 ▽

 

Spring Boot 개발 환경 세팅

https://devkingdom.tistory.com/103

 

[Spring] Spring Boot 환경 설정

하이 ~~ 오늘은 Spring Boot 환경 설정을 할거다. 자세히 말하면 스프링 부트 2.0 이다. 스프링 5.0 (스프링부트 2.0) 사용하기 위해서는 JDK 8 이상의 버전이 필요하다. 참고로 스프링 4.0은 JDK 6이상이다. 먼저..

devkingdom.tistory.com

 

Spring MVC 로 RESTFul 서비스 개발하기 (1)

https://devkingdom.tistory.com/108

 

[Spring] Spring MVC 로 RESTFul 서비스 개발하기 (1)

하이 ~~ 요즘 날씨가 거의 봄이다 봄 ㅎㅎ 어디 놀러나가고 싶지만 ... 코로나때문에 나가지도 못하고 ㅜㅡㅜ 봄 날씨인 만큼 Spring(?) 공부나 같이 열심히 하자. 지난번에 내가 Spring Boot 환경 설정을 하고,..

devkingdom.tistory.com

 

지난번에 내가 Layered Architecture에 대해 얘기를 했었다.

 

Spring MVC 는 Controller - Service - Dao(Repository) 계층이 각각의 R&R 을 수행한다.

 

오늘은 우선 Controller 와 Service가 분리된 코드를 포스팅해볼 계획이다.

 

 

 

Controller

 

먼저 @RestController는 기본적으로 json으로 응답을 준다고 했다. 간단하게 아래 처럼 Map 을 이용해서 리턴 타입을 만들어보자. 

 

 

 

빌드를 하고 jar를 돌려보면 ...!

 

 

 

 

이렇게 json 값이 나오는 것을 확인하실 수 있다. ㅎㅎ

 

 

근데 ... 이게 어떻게 json으로 아주 자연스럽게 만들어지는지 궁금하지 않는가? ㅎㅎㅎ 그건 바로 spring boot로 프로젝트를 만들어 올리면 기본적으로 json 처리를 잘 해주는 jackson 라이브러리가 내장되서 만들어지기 때문이다 !

 

그런데 ... 위에서 내가 만들어 놓은 코드가 조금 이상하다는 생각들지 않는가? ㅎㅎ controller는 단순히 요청을 받는 URL 매핑 기능이랑 최종적인 응답을 보내주는 문지기역할만 해야하는데 ... 지금은 요청 자체를 처리해 보리고 있다..

 

이건 .. 여기서 해서는 안된다 ㅜㅜ !! 바로 이 역할을 서비스에서 해줘야한다.

 

 

 

Service

 

아래처럼 서비스 패키지와 클래스를 하나 만들어주자. 어노테이션으로는 @Service를 잡아주면 된다.

 

 

그리고 나중에 사용할 Dao도 하나 그냥 만들어 놓자 !! ㅎㅎ ( 나중에 하면 귀찮으니깐 그냥 껍데기만 하나 만들어 놓자)

 

 

 

Dao는 어노테이션을 @Repository를 사용하면된다.

 

 

 

그리고 우리가 HomeController에서 구현한 내용을 Service에서 구현해주자.

 

 

 

Controller에서 단순히 Service에게 요청을 전달하고 실제 비지니스 로직은 Service가 하게끔 하는 메서드를 하나 만들자.

 

 

굉장히 간단하지만 , 진짜 실무에서는 이런식으로 코드가 짜진다. ㅎㅎ 간단하지? 스프링 어렵지 않쥬~~~

 

아 그리고 인접한 계층끼리 메서드 호출 등의 통신을 해줘야하는데 @AutoWired 어노테이션이 그 역할을 해준다.

이걸 해주면 각각 인접한 계층끼리 의존관계를 스프링컨테이너에서 자동으로 만들어주고, 가비지 컬렉팅같은 것도 알아서 해준다.

 

자 그리고 나서 ~~!! /test로 콜해보면 ~~!!

 

 

이렇게 잘 되는 걸 볼 수 있다.

 

 

Component

 

마지막으로 우리가 사용하는 @Controller, @Service, @Repository 에 대해 간단히 하고 싶은 말이 있다.

이건 프레젠테이션 영역, 서비스 영역, 데이터 영역에 대한 어노테이션인데 얘네는 전부 @Component의 하위의 어노테이션 들이다.

 

스프링 업무를 하다보면 컴포넌트 컴포넌트 하는거 많이 들으실 수 있을텐데 이 세가지를 두고 하는 말이라는 걸 잘 알도록 하자 !

 

자! 그럼 다음에는 Dao 까지 구현해서 CRUD 서비스를 한번 만들어보도록하자! 그럼 모두 즐거운 코딩하자.

 

반응형

댓글