206. 오브젝트팩토리 (objectFactory)

2012. 4. 19. 16:41공부/MYBATIS

마이바티스가 result 객체의 인스턴스를 새로 생성할 때마다, 인스턴스 객체를 생성하기 위해 오브젝트팩토리를 사용해. 기본 오브젝트팩토리는 기본생성자나,  파라미터가 있는 - 파라미터 매핑이 존재한다면- 생성자를 가진 타겟 클래스를 인스터스화하는 것보다 조금 더 많은 것을 하지. 오브젝트팩토리의 기본 행동을 오버라이드하고 싶다면, 새로 만들 수 있어. 예를 들면,

// ExampleObjectFactory.java
public class ExampleObjectFactory extends DefaultObjectFactory {
  public Object create(Class type) {
    return super.create(type);
  }
  public Object create(Class type, List<Class> constructorArgTypes, List<Object> constructorArgs) {
    return super.create(type, constructorArgTypes, constructorArgs);
  }
  public void setProperties(Properties properties) {
    super.setProperties(properties);
  }
}
<!-- mybatis-config.xml -->
<objectFactory type="org.mybatis.example.ExampleObjectFactory">
  <property name="someProperty" value="100"/>
</objectFactory>

오브젝트팩토리의 인터페이스는 매우 간단해. 기본생성자를 다루는 녀석과 파라미터가 있는 생성자들을 다루는 녀석 등 2개의 메소드를 포함해. 마지막으로 setProperties 메소드가 오브젝트팩토리를 설정하기 위해 사용될 수 있어. 오브젝트팩토리 요소의 바디 내에 정의된 프라퍼티들은 너의 오브젝트팩토리 인스턴스가 초기화된 후에 setProperties메소드로 전달될거야.