본문 바로가기
java spring/spring mvc

spring mvc 06 - @RestController로 JSON응답하기

by 킹차니 2021. 5. 7.

@ResponseBody혹은 @RestController를 사용하면 문자열을 그대로 반환할 수 있다.

stringTest메소드를 보면 그냥 문자열을 반환해주는 것을 볼 수 있다.

또한 문자열을 출력해주는 @RestController를 클래스 위에 선언하면 메소드 위의 @ResponseBody를 생략할 수 있다. 

이렇게 문자열을 출력하기 위해서는 servlet-context.xml에 MessageConverter 의존성을 추가해줘야 한다.

또한 위의 xml의 38라인에서 보이듯이 UTF-8을 추가해줘야 한글 출력도 가능해진다.

 

이제 JSON 객체를 반환하도록 해보자. 우선 pom.xml에 jackson 의존성이 필요하다. 현재 메이븐 프로젝트이므로 아래의 의존성만 추가하면 알아서 필요한 라이브러리들을 받아준다.

 

이제 DB에서 받아온 데이터를이 저장된 List 자바 객체를 JSON 객체로 응답해보자.

NoticeService는 DB와 직접 접근하는 클래스이다. (여기서는 아직 연습용이기 때문에 service지만 DAO의 역할을 하는 클래스임)

NoticeService 객체를 생성하고 해당 객체의 메소드인 getList()를 호출하여 DB에 있는 데이터들을 반환받아 

자바 컬렉션 list에 저장한다. 그리고 이를 그대로 반환만 해주면 JSON객체가 반환된다.

이와 같은 결과는 @RestController가 해주는 게 아니다. @RestController는 단순히 return 값을 문자열을 반환할 수 있게 해준다.

그 문자열을 JSON으로 변환해주는 것은 xml에 추가한 MessageConverter가 해주는 것이다.