MyBatis | 설정 파일 | 외부 속성 파일 로드


코드 작성

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <properties resource="hoge.properties">
    <property name="hoge" value="property tag"/>
    <property name="fuga" value="property tag"/>
    <property name="piyo" value="property tag"/>
  </properties>
</configuration>

hoge.properties

fuga=property file
piyo=property file

Main.java

package sample.mybatis;

import java.io.InputStream;
import java.util.Properties;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Main {

    public static void main(String[] args) throws Exception {
        try (InputStream in = Main.class.getResourceAsStream("/mybatis-config.xml")) {
            Properties prop = new Properties();
            prop.put("piyo", "Properties Class");

            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in, prop);
            Properties properties = factory.getConfiguration().getVariables();

            properties.forEach((key, value) -> {
                System.out.printf("%s=%s%n", key, value);
            });
        }
    }
}

실행결과

hoge=property tag
fuga=property file
piyo=Properties Class

설명

  • 다음 위치에서 속성을 정의할 수 있다.
    • <properties> 태그 안에 <property> 태그를 정의한다.
    • <properties> 태그에서 가져온 속성 파일를 정의한다.
    • SqlSessionFactory를 생성할 때 Properties 인스턴스를 건네 준다.
  • 각 정의는 위에서 아래 순서대로 로드하고, 나중에 로드된 것이 덮어 쓰여진다.
  • <properties> 태그로 다른 파일을 가져오는 경우, resource 속성에 리소스 파일을 url 속성으로 URL 지정으로 파일을 읽어 올 수 있다.
    • url 속성에 지정하려면, file:///C:/foo/bar/hoge.properties 같은 느낌으로 지정한다.
  • 가져온 속성은 ${...} 형태로 참조를 할 수 있다.