티스토리 뷰

반응형

업무를 하다보면 VO객체의 전체 키와 값을 콘솔에 출력해서 확인해야 할 때가 있습니다.

일부 값만 출력하려면 별수 없이 직접 타이핑 해야 하지만 전체 값을 출력하려면 더 편한 방법이 있습니다. 



Eclipse의 Generate toString() 기능 사용하기


VO클래스 파일을 열고, Eclipse - Source - Generate toString()을 클릭하면 아래와 같은 구문이 추가된다.


1
2
3
4
    @Override
    public String toString() {
        return "TestVO [id=" + id + ", name=" + name + ", address=" + address + ", regDate=" + regDate + "]";
    }
cs

보기에도 좋고, 간편하지만 필드가 추가/삭제/수정될 떄마다 다시 해줘야 하는 불편함이 있다.

변경될 일이 많은 VO객체의 특성상 그리 추천되지는 않는 방법이다.



ToStringBuilder.reflectionToString 사용하기


apache commons-lang이란 라이브러리에서 Eclipse의 Generate toString()보다 더 나은 기능을 제공해준다.

우선 결과물이 어떻게 나오는지 부터 살펴보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
*** DefaultStyle ***
com.my.test.vo.TestVO@6937ae66[id=아이디1,name=이름1,address=서울특별시,regDate=2018-08-01]
com.my.test.vo.TestVO@4c9f2668[id=아이디2,name=이름2,address=경기도,regDate=2018-07-01]
 
 
*** JsonStyle ***
{"id":"아이디1","name":"이름1","address":"서울특별시","regDate":"2018-08-01"}
{"id":"아이디2","name":"이름2","address":"경기도","regDate":"2018-07-01"}
 
 
*** MultiLineStyle ***
com.my.test.vo.TestVO@6937ae66[
  id=아이디1
  name=이름1
  address=서울특별시
  regDate=2018-08-01
]
com.my.test.vo.TestVO@4c9f2668[
  id=아이디2
  name=이름2
  address=경기도
  regDate=2018-07-01
]
 
 
*** NoClassStyle ***
[id=아이디1,name=이름1,address=서울특별시,regDate=2018-08-01]
[id=아이디2,name=이름2,address=경기도,regDate=2018-07-01]
 
 
*** NoFieldNameStyle ***
com.my.test.vo.TestVO@6937ae66[아이디1,이름1,서울특별시,2018-08-01]
com.my.test.vo.TestVO@4c9f2668[아이디2,이름2,경기도,2018-07-01]
 
 
*** ShortPrefixStyle ***
TestVO[id=아이디1,name=이름1,address=서울특별시,regDate=2018-08-01]
TestVO[id=아이디2,name=이름2,address=경기도,regDate=2018-07-01]
 
 
*** Simple ***
아이디1,이름1,서울특별시,2018-08-01
아이디2,이름2,경기도,2018-07-01
cs

라이브러리에서 제공하는 모든 스타일을 출력해봤다.
가장 큰 장점은 VO객체가 아무리 변경되더라도 모든 key와 value가 정확하게 출력된다는 것이다.
총 7가지의 스타일을 지원하기 떄문에 입맛에 맞게 골라서 사용할 수 있다.

사용방법은 아래를 참고하면 된다.

pom.xml파일에 dependency 추가


1
2
3
4
5
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.7</version>
        </dependency>
cs

아래의 링크에 들어가보면 3.7버전은 JDK 1.7이상을 요구한다고 되어있고, 그 외의 별도의 요구사항은 없는듯 하다.

https://commons.apache.org/proper/commons-lang/



VO객체 파일에 toStirng함수 추가


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.my.test.vo;
 
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
 
public class TestVO {
    private String id;
    private String name;
    private String address;
    private String regDate;
 
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getRegDate() {
        return regDate;
    }
    public void setRegDate(String regDate) {
        this.regDate = regDate;
    }
 
    public String toStringDefault() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE);
    }
    public String toStringJson() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
    }    
    public String toStringMultiline() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
    }
    public String toStringNoClass() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.NO_CLASS_NAME_STYLE);
    }    
    public String toStringNoFieldName() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.NO_FIELD_NAMES_STYLE);
    }
    public String toStringShortPrefix() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
    }    
    public String toStringSimple() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.SIMPLE_STYLE);
    }        
}
 
cs


반응형

'Java' 카테고리의 다른 글

[Java] Eclipse에서 Class 파일 열기  (0) 2021.05.31
[Java] split 점(.)으로 하기  (3) 2018.05.25
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함