예를들어 Bean 클래스를 만들었는데 toString 메소드를 만들어서 출력하게 하고싶다고 치자 어떻게 해야할까?

뭐 가장 쉬운 방법은 get 메소드를 하나하나 호출해서 붙혀서 알맞게 출력하는 방법이겠지만, 그게 답이라면 이글을 쓸필요도 없겠다.

정말 간단한 답이 있었다.
일단 아파치 자카르타 프로젝트의 Commons Lang 에서 제공하는 API 를 이용하여 메소드들을 쉽게 구현할수 있다.
이 라이브러리는 toString 말고도 equals,hashCode 도 쉽게 만드는 방법을 제공한다.

BaseObject 라는 클래스를 아래와같이 만들어서 모든 Bean 클래스에 적용해 주면된다.



- BaseObject.java

[code]package dic.model;

import java.io.Serializable;

import org.apache.commons.lang.builder.*;

@SuppressWarnings("serial")
public class BaseObject implements Serializable {
 public String toString() {
  return ToStringBuilder.reflectionToString(this,ToStringStyle.MULTI_LINE_STYLE);
 }
  public boolean equals(Object o) {
  return EqualsBuilder.reflectionEquals(this, o);
 }
 
 public int hashCode() {
  return HashCodeBuilder.reflectionHashCode(this);
 }
}[/code]

- Member.java

[code]package dic.model;

import java.util.Date;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

import dic.member.MemberManager;

public class Member extends BaseObject implements HttpSessionBindingListener{
 private String id;
 private String password;
 private String name;
 private String auth_id_list;
 private String file_id_list;
 private Date reg_date;

 public String getId() {
  return id;
 }
 public void setId(String s) {
  id = s;
 }
 
 public String getPassword() {
  return password;
 }
 public void setPassword(String s) {
  password = s;
 }
 
 public String getName() {
  return name;
 }
 public void setName(String s) {
  name = s;
 }
 
 public String getAuthIdList() {
  return auth_id_list;
 }
 public void setAuthIdList(String s) {
  auth_id_list = s;
 }
 
 public String getFileIdList() {
  return file_id_list;
 }
 public void setFileIdList(String s) {
  file_id_list = s;
 }
 
 public Date getRegDate() {
  return reg_date;
 }
 public void setRegDate(Date d) {
  reg_date = d;
 }
 
 // 세션에 입력될때
 public void valueBound(HttpSessionBindingEvent event) {
  MemberManager.getInstance().doLogin(this);
 }
 // 세션에서 제거될때
 public void valueUnbound(HttpSessionBindingEvent event) {
  MemberManager.getInstance().doLogout(this);
 }
 
 public static void main(String args[]) {
  Member m = new Member();
  m.setId("cranix");
  m.setPassword("1234");
  m.setName("크래닉스");
  System.out.println(m);
 }
}[/code]


 - 실행결과

dic.model.Member@8813f2[
  id=cranix
  password=1234
  name=크래닉스
  auth_id_list=<null>
  file_id_list=<null>
  reg_date=<null>
]


' > Spring' 카테고리의 다른 글

Spring jsp 예외처리 전략  (20) 2007.05.30
Spring 의 exception 처리 전략  (26) 2007.05.29
기본 Controller 지정하기.  (23) 2007.05.24
SPRING  (25) 2007.02.28
JSTL 사용하기  (28) 2007.02.28
by cranix 2007. 5. 26. 01:10