Skip to Content
Go Back
안형우

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

📌 워드프레스, 답답한 빌더와 플러그인 대신 시원하게 커스터마징하기(강의) 2023-01-15
📌 아무도 말하지 않는 PHP의 좋은 점 2018-10-13
📌 유지보수하기 쉬운 CSS 전략(슬라이드) 2016-12-20
📌 워드프레스 테마에서 템플릿 파일 매칭 순서 2013-05-12

자바에서 Pojomatic을 이용해 객체 내용 출력하기 – var_dump나 print_r처럼

나는 주로 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) 식으로 사용할 수도 있다.

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다