나는 주로 PHP 개발을 한다. 물론 JAVA 개발도 한다. PHP에는 디버그 툴로 print_r이나 var_dump 같은 함수가 있다. xdebug 같은 확장을 이용하면 출력도 깔끔하다.
JAVA에는 그런 게 없다. 물론 이클립스를 이용해 객체를 디버그할 수 있지만, 불편하다.
좀 번거롭지만, toString() 메서드를 오버라이드할 수 있는 방법이 있다. 이렇게 하면 print_r 함수를 사용한 것처럼 객체 내용을 출력한다. Pojomatic 라이브러리를 사용한다.
만약 메이븐을 사용한다면, pom.xml에 아래처럼 의존성을 추가해 준다.
<dependency>
<groupId>org.pojomatic</groupId>
<artifactId>pojomatic</artifactId>
<version>1.0</version>
</dependency>
PostVo.java처럼 내용을 출력하기 원하는 객체에 Pojomatic을 임포트하고, 클래스 위에 @AutoProperty 어노테이션을 넣어 준다.
import org.pojomatic.Pojomatic;
import org.pojomatic.annotations.AutoProperty;
@AutoProperty
public class PostVO { ... }
그리고 아래처럼 toString 메서드를 덮어 쓴다.
@Override
public String toString() {
return Pojomatic.toString (this);
}
hashCode()와 equals(Object o) 메서드도 덮어 쓸 수 있다.
@Override
public boolean equals(Object o) {
return Pojomatic.equals (this, o);
}
@Override
public int hashCode() {
return Pojomatic.hashCode (this);
}
이렇게 하고 나면, 아래처럼 코드를 쓸 수 있고, 결과도 아래처럼 나온다.
System.out.println(new Person("John", "Doe", 32).toString());
// result: Person{firstName: {John}, lastName: {Doe}, age: {32}}
흔히 사용하는 log4j에서 logger.debug("{}", vo) 식으로 사용할 수도 있다.










댓글 남기기