java and sping

[Spring] Lombok의 기능 중 @ToString에 대해서?

코딩하는 공부방 2023. 6. 21. 01:00

Lombok 이란?


    public class ReviewDto {

        private Long reviewId;

        private Integer rating;

        private String comment;

        private String createReviewDate;

        private String username;

        private List<String> imgUrlList = new ArrayList<>();


        public Long getReviewId() {
            return reviewId;
        }

        public void setReviewId(Long reviewId) {
            this.reviewId = reviewId;
        }

        public Integer getRating() {
            return rating;
        }

        public void setRating(Integer rating) {
            this.rating = rating;
        }

        public String getComment() {
            return comment;
        }

        public void setComment(String comment) {
            this.comment = comment;
        }

        public String getCreateReviewDate() {
            return createReviewDate;
        }

        public void setCreateReviewDate(String createReviewDate) {
            this.createReviewDate = createReviewDate;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public List<String> getImgUrlList() {
            return imgUrlList;
        }

        public void setImgUrlList(List<String> imgUrlList) {
            this.imgUrlList = imgUrlList;
        }

        @Override
        public String toString() {
            return "ReviewDto{" +
                    "reviewId=" + reviewId +
                    ", rating=" + rating +
                    ", comment='" + comment + '\'' +
                    ", createReviewDate='" + createReviewDate + '\'' +
                    ", username='" + username + '\'' +
                    ", imgUrlList=" + imgUrlList +
                    '}';
        }
     }

위에 코드를 사용하면 코드의 가독성이 떨어집니다.
Ide에서 자동완성 해주는 기능이 있지만 그것도 불편하게 개발자이다.
그래서 Lombok을 사용하는 것이다.

 

Lombok이란 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리입니다. Lombok을 이용하면 Getter, Setter, NoArgsConstructor, AllArgsConstructor, ToString 등과 다양한 방면의 코드를 완성 시킬 수 있다. 

 만약에 엔티티에서 생성자도 필요하고, toString 함수도 Override 해야하는 추가적인 작업이 필요하다면 1개의 VO 클래스만 해도 상당히 길어지고, 코드의 가독성이 떨어지는 등의 단점이 있습니다. 만약 위의 클래스에 Lombok을 적용한다면 아래와 같이 단순화시킬 수 있습니다.(실무에서 Lombok을 활용할 때에는 모든 변수들에 대해 Setter를 사용하지 않지만, 예제에서는 단순화를 위해 모든 변수에 대해 @Setter를 적용시키도록 하겠습니다.)

@Getter
@Setter
@ToString
public class ReviewDto {

    private Long reviewId;

    private Integer rating;

    private String comment;

    private String createReviewDate;

    private String username;

    private List<String> imgUrlList = new ArrayList<>();
}

위와 아래의 클래스만 보아도 Lombok을 활용하면 엄청난 양의 업무량을 단순화 시켜서 얻을 수 있음을 명확하게 확인할 수 있습니다.

 

 

[@ToString]


@ToString 어노테이션을 활용하면 클래스의 변수들을 기반으로 ToString 메소드를 자동으로 완성시켜 준다. 출력을 원하지 않는 변수에 @ToString.Exclude 어노테이션을 붙여주면 출력을 제외할 수 있다. 또한 상위 클래스에 대해도 toString을 적용시키고자 한다면 상위 클래스에 @ToString(callSuper = true) 를 적용시키면 된다.

위와 같이 설정을 해서 호출하면 아래의 이미지와 같이 부모의 변수들도 잘 출력해 주는 것을 볼 수 있습니다.