티스토리 뷰
반응형
업무를 하다보면 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
링크
TAG
- react 강의
- 인텔리제이
- React
- Git 사용법
- dropdowncalendar
- IntelliJ
- Grid
- ListView
- dropdowncombo
- JavaScript Hoisting 호이스팅
- CodeSandbox
- nodatatext
- react 공식문서
- git
- autoenter
- Nexacro
- react 강좌
- Git 연동
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함