202. 속성들 (propertis)

2012. 4. 18. 11:32공부/MYBATIS

이것들은 특정 자바 프라퍼티 파일 인스턴스에 설정되거나 프라퍼티 요소의 서브요소로 갈 수도 있는, 외부로 빼거나 대용 가능한 속성들이야. 예를 들면

<properties resource="org/mybatis/example/config.properties">
  <property name="username" value="dev_user"/>
  <property name="password" value="F2Fa3!33TYyg"/>
</properties>

프라퍼티는 동적으로 속성값을 대체하기 위해, 속성 파일 전체에 걸쳐 사용될 수 있어, 예를 들면

<dataSource type="POOLED">
  <property name="driver" value="${driver}"/>
  <property name="url" value="${url}"/>
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
</dataSource>

이 예제에서 username과 passwor는 프라퍼티 요소로 세팅된 값으로 대체될 수 있어. driver와 url 프라퍼티는 config.properties 파일에 포함된 값으로 대체되지. 이는 많은 설정 옵션을 제공해.

프라퍼티는 또한 SqlSessionBuilder.build() 메소드로 패스되기도 해. 예를 들면

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, props);

// ... or ...

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment, props);

만약 프라퍼티가 여러곳에 존재하게 된다면 마이바티스는 다음과 같은 순서로 로딩하지.

- 프라퍼티 요소의 바디 부분에 기술된 프라퍼티를 먼저 읽고

- 클래스패스 자원이나 URL 속성을 가진 프라퍼티 요소가 두번째로 읽혀지고 중복되어 기술된 다른 프라퍼티들을 오버라이드 해.

- 메소드 파라미터로 패스된 프라퍼티를 가장 마지막에 읽고, 프라퍼티 바디나, 클래스패스 자원 / URL 속성 등으로 기술된 중복 프라퍼티를 오버라이드 해.

그러므로 최우선적인 권한을 가진 프라퍼티는 메소드 파라미터로 전달된 녀석이고, 그 다음은 자원/URL, 마지막은 프라퍼티 파일에 기술된 녀석이지.