자바빈 규약에 맞추어서 다음과 같은 프러퍼티에 값을 셋팅을 하고 싶다.
post.postOptions.openType

iBATIS는 어떻게 작동을 할까? PostOptions객체를 만들어서 populate를 한 다음 Post에 setPostOptions을 이용해서 VO를 셋팅한다.

난 post.postOptions으로 만들어진 객체를 찾은 후에 postOptions에서 setter를 찾아서 populate를 하길 원했는데..흑흑

내가 원했던 코드
class Post{
   private final PostOptions postOptions = new PostOptions();

  public PostOptions getPostOptions()
    
  }
}


iBATIS 덕택에 수정한 코드

class Post{
   private PostOptions postOptions;

  public void setPostOptions(){
 
  }
  public PostOptions getPostOptions()
    
  }
}

물론 이렇게 해도 된다.

class Post{
   private final PostOptions postOptions = new PostOptions ();

  public void setPostOptions(){
      postOptions.setXXX(XXX);
     postOptions.setXXX(XXX);
     postOptions.setXXX(XXX);
  }
  public PostOptions getPostOptions()
    
  }
}

BeanUtils클래스나 spring의 프러퍼티를 접근하는 API를 이용해서 좀더 깔끔하게 만들 수는 있지만, 여전히 종속적인 코드가 들어간다.

결론을 얘기하자면, PostOptions에 대한 get을 만들고, Post에 대한 PostOptions객체를 immutable하게 만들려는 나의 생각은 setPostOptions(PostOptions postOptions)와 함께 날라가 버렸다.

프레임워크를 사용을 하다가 보면, 의도하지 하게 내부 프러퍼티에 대한 접근을 오픈을 해야 하는 경우가 종종 있다. spring을 사용을 하다가 보면 만은 setter메소드가 필요하게 된다. default접근자로 해결을 해야 할 것도 어쩔 수 없이 public으로 하는 경우도 종종 있다.

Posted by ologist
이전버튼 1 이전버튼

블로그 이미지
ologist

공지사항

Yesterday171
Today52
Total34,795

달력

 « |  » 2012.02
      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      

최근에 받은 트랙백

글 보관함