반응형
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의 경로를 설정해줬다.
스프링 환경에서만 개발하다가 자바로 개발하니 이것도 재미있다.
반응형
'Java > Java' 카테고리의 다른 글
[JSTL] custom taglib에서 가변인자 사용하는 함수 만들기 (0) | 2019.11.27 |
---|---|
[JSTL] 배열, 리스트 등의 길이 확인하기 (0) | 2019.11.27 |