사내 신규 프로젝트중 운영중인 서비스 기반하에 개발해야하는 상황이 생김.
다중 DB 구성은 여러번 해봤지만
이번에 막혔던 부분이 외부 jar 의 mapper 와 xml 파일들을 제대로 찾지 못해 빌드 실패하는 문제 발생
아래처럼 외부 jar 를 이용하여 DB 서비스를 호출해야 함
![]() |
![]() |
아래는 application.yml
아래는 cim 과, dr 이라는 이름의 DatabaseConfig
![]() |
![]() |
mapper 와 xml 을 찾지 못했는데
CimDatabaseConfig.java
...
@Bean(name="sqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setConfigLocation(applicationContext.getResource("classpath:mybatis-config.xml"));
//외부 jar의 xml 파일들이 있는 패키지 경로, classpath 뒤에 *를 붙여야 모든 JAR 파일을 자동으로 포함
sessionFactory.setMapperLocations(applicationContext.getResources("classpath*:/mybatis/a/cim/db/*.xml"));
//외부 jar의 Service, Impl, Mapper 파일들이 있는 패키지 경로
sessionFactory.setTypeAliasesPackage("net.a.cim.db");
return sessionFactory.getObject();
}
...
DrDatabaseConfig.java
...
@Bean(name="drSqlSessionFactory")
public SqlSessionFactory drSqlSessionFactory(@Qualifier("drDataSource")DataSource drDataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(drDataSource);
sessionFactory.setConfigLocation(applicationContext.getResource("classpath:mybatis-config.xml"));
//현재 프로젝트의 xml 파일들이 있는 패키지 경로, classpath 뒤에 *를 붙여야 모든 JAR 파일을 자동으로 포함
sessionFactory.setMapperLocations(applicationContext.getResources("classpath*:/mybatis/b/dr/db/*.xml"));
//현재 프로젝트의 Service, Impl, Mapper 파일들이 있는 패키지 경로
sessionFactory.setTypeAliasesPackage("net.b.dr.db");
return sessionFactory.getObject();
}
...
위처럼 setTypeAliasesPackage 에 패키지명을 명시해주니 해결
'Develop_Backend > Spring' 카테고리의 다른 글
Spring Profile 설정 - 간단한 서버 환경별 설정 (0) | 2020.03.19 |
---|