본문 바로가기

컴퓨터/Spring + JPA

[인텔리제이 DTO generator] json data 자동으로 entity class 생성하기

반응형

최근 다양한 api을 활용하여 데이터를 받아오는 작업을 많이 하고 있다.

 

많은 api들이 JSON 형태로 데이터를 제공하는데, 데이터를 받아오는 과정에서 DTO class를 만들어 받아오고 있다.

 

JSON 포멧이 간단하다면 DTO class를 쉽게 작성할 수 있지만, 조금만 복잡해지면 상당히 귀찮아진다.

 

좀 편하게 이 문제를 해결하려고 알아보는 도중 인텔리제이에서 지원하는 플러그인을 활용하는 방법을 찾게되었다.

 

아래 URL에서 설치를 하거나, 인텔리제이에서 shift를 2번 눌린 후 plugins 을 검색하고, DTO generator를 설치하면 된다.

https://plugins.jetbrains.com/plugin/7834-dto-generator

 

 

DTO generator를 사용하여 아래와 같은 JSON을 DTO class로 만들어보자!

{
  "access_token": "0123456789abcdefghijABCDEFGHIJ",
  "refresh_token": "eyJfaWQmNzMtNGCJ9%6VFV5LNrZFUj8oU231/3Aj",
  "expires_in": 3600,
  "scope": "channel:read:subscriptions",
  "token_type": "bearer"
}

 

먼저 빈 클래스를 생성한 후 생성하고자 하는 위치에 커서를 두고 Generate ( 단축키 cmd + N )를 눌린다.

 

아래와 같이 DTO from JSON 을 클릭한다.

 

클릭한 후에 JSON 데이터를 붙혀넣고, validate 버튼을 눌린다.

정상적인 JSON 포멧이 아니라면, 아래와 같이 에러 표시가 나타난다.

유효한 포멧을 입력했다면, 위에 보이는 Settings 탭에서 아래와 같이 설정해주자. 설정은 원하는대로 수정하면 된다.

셋팅까지 했다면, Genetare 버튼을 눌려주자.

Generate 버튼을 눌리면 아래와 같이 추상클래스 코드가 생성되는데 여기서 abstract 키워드를 제거 한 후 사용하면 된다.

나는 롬복 @Data 어노테이션을 추가 작성하여 사용하고 있다.

 

나는 아래와 같은 형태로 spring 에서 제공하는 restTemplate을 사용하여 api를 받아오고 있다.

 

public ValidateTokenDto validateToken() {
        try {
            HttpHeaders headers = new HttpHeaders();
            headers.set("Authorization", "OAuth " + ACCESS_TOKEN);
            HttpEntity<?> entity = new HttpEntity<>(headers);

            UriComponents uri = UriComponentsBuilder.fromHttpUrl(VALIDATE_TOKEN_URL).build();
            ResponseEntity<ValidateTokenDto> response = restTemplate.exchange(uri.toString(), HttpMethod.GET, entity, ValidateTokenDto.class);
            return response.getBody();
        } catch (HttpStatusCodeException e) {
            if (e.getStatusCode() == HttpStatus.NOT_FOUND) {

            }
        }
        throw new IllegalStateException("api 호출 실패");
    }
반응형