본문 바로가기

나는개발자다!!/자바 Spring

VO, DTO, Bean이라고 불리는 객체들의 값을 출력하는 썰

Lombok을 사용하시면 더 편리합니다만 롬복을 사용 안 하시거나 현 페이지에서 설명하는 방법은 모든 객체들에 적용이 가능한 방법입니다.



한마디썰~! 뭘 화면에 출력한다는거지?

코딩하다보면 MyDTO my = new MyDTO(); 

해서 my안의 객체들에 실제 들어있는 값을 보고 싶지만 객체 주소만 출력되는 경우를 많이 보게 된다.

(toString을 구현하셨으면 나오겠지만 안 하시거나 변경할 때마다 지웠다가 다시 구현하긴 번거로운게 사실이죠)


보통 Vo, DTO, Bean이라고 불리는 Business Object는 사용할 때 getXXX, setXXX으로 캡슐화된 객체이기 떄문에 값의 확인이 어려운 경우가 초보 개발자분들에게는 여간 불편하게 느껴집니다.

이러한 불편을 한방에 해결해 줄 수 있는데 해당 클래스에 toString()을 재정의해주면 되지만 위에 언급한대로 클래스의 멤버 변수가 수정되면 재정의한 toString()도 수정해야한다. 한마디로 귀찮다. 


다음과 같은 방법으로 유용하게 객체의 값을 확인이 가능하다.

toString()을 재정의할 때 멤버변수들 대신에 다음과 같이 리플렉션을 이용해서 하면 클래스 멤버변수의 변경과 관계없이 모든 객체를 출력해볼 수 있다.


public String toString() {

       return ToStringBuilder.reflectionToString(this);

}​ 


아래와 같이 2번째 인자값은 스타일에 관련된 내용으로 다음과 같은 스타일이 제일 보기가 편했다.

ToStringBuilder.reflectionToString(this,  ToStringStyle.MULTI_LINE_STYLE);