Mappingjackson2jsonview
Mappingjackson2jsonview는 org.springframework.web.servlet.view의 하위 클래스입니다.
이번에는 Mappingjackson2jsonview를 활용하여 View를 Json타입의 뷰로 변환하는데 사용해보도록 하겠습니다.
pom.xml
먼저 pom.xml을 열어 아래 두 의존성을 등록 하도록 합니다.
라이브러리 등록을 완료 하였다면 이제 패키지로 가서 자바 설정 파일을 하나 만들어 두도록 하겠습니다.
ApplicationConfiguration
설정 파일명은 ApplicationConfiguration 로 생성하겠습니다.
설정파일이 생성 되었다면 이제 초기화(initializer) 클래스를 생성하도록 하겠습니다.
초기화 클래스는 ApplicationInitializer 로 생성한 다음
스프링 이벤트 리스너인 AbstractAnnotationConfigDispatcherServletInitializer를 구현하여
이전 생성한 ApplicationConfiguration을 서블릿 설정 클래스와 서블릿 매핑 정보(“/”)를 등록합니다.
UserRepository와 User
이제 저장소(Repository)와 POJO클래스를 생성하겠습니다.
저장소는 UserRepository POJO 클래스로는 User로 생성하겠습니다.
POJO클래스의 속성값을 추가하도록 하겠습니다.
속성값으로는 id, name, address 3항목을 추가한 다음 setter를 추가 하겠습니다.
이제 저장소의 사용자를 등록하고 조회 하는 기능을 추가하겠습니다.
특정 사용자를 조회하기 위하여 findUser, 전체 사용자를 조회하기 위하여 findUserList 기능을 추가 하도록 하겠습니다.
UserRepository의 초기 사용자를 등록 하겠습니다.
이제 준비는 끝났습니다.
이제 Mappingjackson2jsonview를 활용하여 model(Object)를 json으로 된 view로 변환하여 보도록 하겠습니다.
(BeanNameViewResolver를 사용하는 이유는 후에 컨트롤러에서 ViewResolver를 jsonView로 뷰를 매핑하기 위합입니다.)
또한 @ComponentScan을 사용하여 빈 스캐닝을 자동으로 하도록 처리합니다.
AppController
이제 사용자의 요청을 받아 처리 해보도록 하겠습니다
사용자의 요청을 받아 처리하는 곳을 웹 레이어(웹 프리젠테이션 - 컨트롤러)라고 하며
웹 애플리케이션에서는 이 웹 레이어를 각각 모듈별로 엔트리 포인트로 분리하여 처리하기도 합니다.
그러며 먼저 AppController클래스를 하나 선언하고 요청을 받을 수 있는 요청 매핑(RequestMapping)을 하나 추가 하겠습니다.
(“jsonView”을 뷰 네임으로 매핑하는 것은 ApplicationConfiguration에서 MappingJackson2JsonView로 처리하여서 가능합니다.)
JSON 매핑
마지막으로 JSON을 매핑할 수 있도록 User와 UserRepository의 xml 매핑을 추가하겠습니다.
클래스를 Json Attribute로 변환하는 쉬운 방법 두 가지를 설명하도록 하겠습니다.
- @JsonProperty를 사용하여 속성값을 직접 바인딩
- @JsonAutoDetect를 사용하여 내부 field/getter값 자동 바인딩
먼저 @JsonProperty를 사용하여 User를 바인딩 해 보도록 하겠습니다.
다음 UserRepository에서는 @JsonAutoDetect를 사용하여 List로 된 필드를 자동 검색 하도록 하겠습니다.
만일 특정 값을 직렬화 대상에서 제거 하고 싶을 때에는 @JsonIgnoreProperties를 사용하여 직렬화 대상에서 배제 할수 있습니다.