프로젝트를 작성하던 중 Dto를 어떻게 만들면 좋을까라는 고민일 계속하던 와중 다음과 같은 오류가 발생하였다.
@Getter
public class GameVideoResponse {
private String title;
private String contents;
private String videoPath;
private int viewCount;
private GameResponse game;
public GameVideoResponse(GameVideo gameVideo) {
this.title = gameVideo.getTitle();
this.contents = gameVideo.getContents();
this.videoPath = gameVideo.getVideoPath();
this.viewCount = gameVideo.getViewCount();
this.game = new GameResponse(gameVideo.getGame());
}
public class GameResponse {
private Long id;
private String title;
private String logo;
public GameResponse(Game game) {
this.id = game.getId();
this.title = game.getTitle();
this.logo = game.getLogo();
}
}
}
클래스 내부에서 또 다른 클래스를 선언해서 Dto를 깔끔하게 만드는게 목적이였다.
해당 오류는 클래스를 직렬화 할 수 없다는 뜻으로 직렬화를 가능하게 만드는 것이 목표다.
@Getter
를 사용하여 게터 메서드를 만들어 직렬화를 하는 방법 Java 객체의 속성을 JSON 필드와 매핑할 때 사용된다.
@JsonProperty
를 사용해서 직렬화 하는 방법
public class GameResponse {
private String gameTitle;
private String genre;
@JsonProperty
public String getGameTitle() {
return gameTitle;
}
@JsonProperty
public String getGenre() {
return genre;
}
}
나는 @Getter
를 사용하여 해결하였다.
@Getter
public class GameVideoResponse {
private String title;
private String contents;
private String videoPath;
private int viewCount;
private GameResponse game;
public GameVideoResponse(GameVideo gameVideo) {
this.title = gameVideo.getTitle();
this.contents = gameVideo.getContents();
this.videoPath = gameVideo.getVideoPath();
this.viewCount = gameVideo.getViewCount();
this.game = new GameResponse(gameVideo.getGame());
}
@Getter
public class GameResponse {
private Long id;
private String title;
private String logo;
public GameResponse(Game game) {
this.id = game.getId();
this.title = game.getTitle();
this.logo = game.getLogo();
}
}
}