본문 바로가기
Java/Java

Mybatis-config.xml에서 yaml의 값 읽어오기

by 오늘의개발부 2021. 1. 5.
반응형

  Java, Quartz를 이용해 스케줄러를 개발하면서 DB 프레임워크로 Mybatis를 얹어서 사용했다.

  설정값은 yaml에 모아놨는데, 관리 포인트를 하나로 집중하기 위해 mybatis-config.xml의 dataSource 설정도 yaml에서 관리하고 싶었다.

 

  Spring Boot를 썼을 때는 Mybatis 설정을 yaml에 해두면 알아서 읽어줬었는데, mybatis-config.xml에 사용할 때도 yaml에서 값을 읽어오게 할 수 있을까?

  아래와같이 설정하니 정상적으로 작동했다.

 

 

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="config.yaml">
        <property name="driver" value="${mybatis.driver}"/>
        <property name="url" value="${mybatis.url}"/>
        <property name="username" value="${mybatis.useranme}"/>
        <property name="password" value="${mybatis.password}"/>
        <property name="db" value="${mybatis.db}"/>
    </properties>


    <environments default="default">
        <environment id="default">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
          </dataSource>
        </environment>
  </environments>

    <mappers>
        <mapper resource="mappers/${db}/test_mapper.xml"/>
    </mappers>

</configuration>

 

config.yaml

mybatis:
#  driver: oracle.jdbc.driver.OracleDriver
#  url: jdbc:oracle:thin:@....:1521/orcl
#  username: username
#  password: password
#  db: oracle
  driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
  url: jdbc:sqlserver://....:1433;DatabaseName=test
  username: username
  password: password
  db: mssql

 

 

 

  이 프로젝트의 경우는 mssql과 oracle 두 가지 환경에 적용되어야 했기 때문에 조금 불편하지만 쿼리를 두 개씩 짰다.

그래서 yaml에 mybatis.db라는 속성을 둬서 db에 따라 환경별로 읽어들일 mapper의 경로를 설정해줬다.

 

프로젝트 폴더구조는 이렇다

 

 

스프링 환경에서만 개발하다가 자바로 개발하니 이것도 재미있다.

반응형