egov 3.7 다중DB 설정
- 작성자 :
- 박*균
- 작성일 :
- 2020-06-10 18:00:46
- 조회수 :
- 5,205
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
안녕하세요
egov 3.7.0 버전을 사용하고 있습니다.
다중 DB를 사용하기 위해 작업중에 있고 테스트 성으로 mariaDB 2개를 각각 데디터 소스를 만들고 사용하려고 합니다.
context-mapper.xml
<bean id="otherSqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="otherDataSource" />
<property name="configLocation" value="classpath:/egovframework/sqlmap/example/sql-mapper-config.xml" />
<property name="mapperLocations" value="classpath:/egovframework/sqlmap/example/mappers_test/*.xml" />
</bean>
<!-- SqlSession setup for MyBatis Database Layer -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/egovframework/sqlmap/example/sql-mapper-config.xml" />
<property name="mapperLocations" value="classpath:/egovframework/sqlmap/example/mappers/*.xml" />
</bean>
<!-- MapperConfigurer setup for MyBatis Database Layer with @Mapper("deptMapper") in DeptMapper Interface -->
<bean class="egovframework.rte.psl.dataaccess.mapper.MapperConfigurer">
<property name="basePackage" value="egovframework.example.sample.service.impl" />
</bean>
context-datasource.xml
<bean id="otherDataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.mariadb.jdbc.Driver"></property>
<property name="url" value="....."></property>
<property name="username" value="....."></property>
<property name="password" value="...."></property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.mariadb.jdbc.Driver"></property>
<property name="url" value="....."></property>
<property name="username" value="...."></property>
<property name="password" value="...."></property>
</bean>
로 설정하고
DAO는 EgovAbstractMapper를 상속받고
@Override
@Resource(name = "otherSqlSession")
public void setSqlSessionFactory(SqlSessionFactory sqlSession) {
super.setSqlSessionFactory(sqlSession);
}
를 dao 상단에 삽입하여 override를 하였습니다.
그런데
sql-mapper-config.xml과 mappers 내에 있는 쿼리문들은 잘 찾아 가는데 데이터 소스는 dataSource로만 연결되고 있습니다.
어떤 설정을 더 해야 하는지 알려주시면 감사하겠습니다.
egov 3.7.0 버전을 사용하고 있습니다.
다중 DB를 사용하기 위해 작업중에 있고 테스트 성으로 mariaDB 2개를 각각 데디터 소스를 만들고 사용하려고 합니다.
context-mapper.xml
<bean id="otherSqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="otherDataSource" />
<property name="configLocation" value="classpath:/egovframework/sqlmap/example/sql-mapper-config.xml" />
<property name="mapperLocations" value="classpath:/egovframework/sqlmap/example/mappers_test/*.xml" />
</bean>
<!-- SqlSession setup for MyBatis Database Layer -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/egovframework/sqlmap/example/sql-mapper-config.xml" />
<property name="mapperLocations" value="classpath:/egovframework/sqlmap/example/mappers/*.xml" />
</bean>
<!-- MapperConfigurer setup for MyBatis Database Layer with @Mapper("deptMapper") in DeptMapper Interface -->
<bean class="egovframework.rte.psl.dataaccess.mapper.MapperConfigurer">
<property name="basePackage" value="egovframework.example.sample.service.impl" />
</bean>
context-datasource.xml
<bean id="otherDataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.mariadb.jdbc.Driver"></property>
<property name="url" value="....."></property>
<property name="username" value="....."></property>
<property name="password" value="...."></property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.mariadb.jdbc.Driver"></property>
<property name="url" value="....."></property>
<property name="username" value="...."></property>
<property name="password" value="...."></property>
</bean>
로 설정하고
DAO는 EgovAbstractMapper를 상속받고
@Override
@Resource(name = "otherSqlSession")
public void setSqlSessionFactory(SqlSessionFactory sqlSession) {
super.setSqlSessionFactory(sqlSession);
}
를 dao 상단에 삽입하여 override를 하였습니다.
그런데
sql-mapper-config.xml과 mappers 내에 있는 쿼리문들은 잘 찾아 가는데 데이터 소스는 dataSource로만 연결되고 있습니다.
어떤 설정을 더 해야 하는지 알려주시면 감사하겠습니다.
A
안녕하세요.
표준프레임워크센터입니다.
현재 보내주신 설정에는 크게 문제가 없어 보입니다.
센터에서 테스트 했을때도 이상이 없이 나옵니다.
혹시 단순 실수로 두 datasource 정보를 같게 놓거나 같은 쿼리로 되어있는것은 아닌지
혹은 다른 부분에서 잘못된 것은 없는지 한번 확인해 보시길 바라겠습니다.
감사합니다.
표준프레임워크센터입니다.
현재 보내주신 설정에는 크게 문제가 없어 보입니다.
센터에서 테스트 했을때도 이상이 없이 나옵니다.
혹시 단순 실수로 두 datasource 정보를 같게 놓거나 같은 쿼리로 되어있는것은 아닌지
혹은 다른 부분에서 잘못된 것은 없는지 한번 확인해 보시길 바라겠습니다.
감사합니다.