VO 객체 만들기

Json은 JavaScript Object Notation이다.

스트링타입이 아니라 { “result”: 0, “msg”: “name” } 라는 json 형태로 리턴하기 위해서 com.eastflag.fullstack 폴더에 domain 패키지를 추가하고 ResultVO 클래스를 추가한다.

여기서 어노테이션은 lombok에서 설정한 라이브러리이다. gradle.build에 Lombok 라이브러리가 추가되었기 때무에 compile 에러는 나지 않지만 실제로 동작하기 위해서는 컴파일시에 Lombok 라이브러리가 idea 개발툴이 빌드할 때 관련 작업을 해줘야 한다. 그래서 Lombok 플러그인과 환경설정이 되어있어야 런타임 오류가 발생하지 않을것이다. 많일 런타임 에러가 발생한다면 1.3.2를 참고하여 lombok 환경설정을 하여야 한다. 환경 설정후 반드시 Rebuild를 눌러서 재 컴파일해야 한다.

@Data는 setter, getter를 자동으로 만들어 준다.

@NoArgsConstructor는 디폴트 생성자를 만들어준다.

@AllArgsConstructor는 모든 파라메터를 가진 생성자를 만들어준다.

뿐만 아니라 toString() 함수도 자동으로 구현해준다. 이것을 확인하는 방법은 Control-F12 를 눌러서 File Structure를 확인해보자.

ResultVO(int, String), ResultVO() 라는 생성자와 setMsg(String), setResult(int) 라는 세터함수, getMsg(), getResult() 라는 세터함수,  toString() 함수까지 자동으로 생성되어있음을 알수있다.

 

lombok 단위 테스트

lombok이 제대로 동작하는지 JUnit 으로 단위테스트를 해보자. test > java 소스폴더의 com.eastflag.fullstack 패키지에 LombokTest 클래스를 아래와 같이 만든다.

화일을 선택하고 우클릭후  Run을 클릭해서 실행한다.

 

hello5 메서드:   json 데이터 리턴하기

hello5 메서드를 만들고 json 객체를 리턴하도록 한다.

리턴타입이 ResultVO 객체라는 점에 주목하자. 스프링프레임웍에 jackson mapper 라이브러리가 자바 객체를 json으로 혹은 json 을 자바객체로 변환해주는 역할을 수행하므로 단순히 자바객체만 리턴하면 된다.

postman으로 테스트해보자.

 

hello6 :  입력을 json으로 받기

이번에는 입력을 json으로 받는 경우이다.

@RequestBody ResultVO result 의 의미는 Request의 Body를 받아서 그것을 ResutlVO 객체로 변환하라는 의미이다. 그러므로 body 부분에 json 데이터를 보내면 그것이 자바 객체로 자동으로 변환이 된다. 위에서 언급한 jsckson mapper에 의해서.

postman으로 테스트해보자.