Springboot mybais 설정 다 중 데이터 원본 프로 세 스 분석
1.application.properties 에 두 개의 데이터 베 이 스 를 설정 합 니 다.
\#druid 연결 풀
\#dataSoure One(여 기 는 내 로 컬 데이터 원본)
spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.one.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.one.jdbc-url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
spring.datasource.one.username=root
spring.datasource.one.password=root
\#dataSoure Two(여 기 는 우리 서버 의 데이터 원본 입 니 다)
spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.two.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.two.jdbc-url=jdbc:mysql://xx.xxx.xx.xxx:3306/kds_master_info?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
spring.datasource.two.username=root
spring.datasource.two.password=KDSmaster123
2.연 결 된 데이터 원본 설정 파일 만 들 기:
아래 DataSource 패키지 가 도입 한 것 은 import javax.activation.Data Source 입 니 다.
@Configuration// mybatis
@MapperScan(basePackages = "com.example.mybatis.mapper",sqlSessionFactoryRef = "sqlSessionFactoryOne")
public class DataSourceConfigOne {
@Bean(name = "dataSourceOne")
@Primary//
// application.properties ,prefix
@ConfigurationProperties(prefix = "spring.datasource.one")
public DataSource dataSourceOne() {
return DataSourceBuilder.create().build();
}
@Bean(name = "sqlSessionFactoryOne")
@Primary
public SqlSessionFactory sqlSessionFactoryOne(@Qualifier("dataSourceOne") DataSource datasource)throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
// mybatis xml
new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);return bean.getObject();
}
@Primary
public SqlSessionTemplate sqlsessiontemplateOne(@Qualifier("sqlsessiontemplateOne") SqlSessionFactory sessionfactory) {
return new SqlSessionTemplate(sessionfactory);
}
}
@Configuration
@MapperScan(basePackages = "com.example.mybatis.mapper2",sqlSessionFactoryRef = "sqlSessionFactoryTwo")
public class DataSourceConfigTwo {
@Bean(name = "dataSourceTwo")
// application.properties ,prefix
@ConfigurationProperties(prefix = "spring.datasource.two")
public DataSource dataSourceTwo() {
return DataSourceBuilder.create().build();
}
@Bean(name = "sqlSessionFactoryTwo")
public SqlSessionFactory sqlSessionFactoryTwo(@Qualifier("dataSourceTwo") DataSource datasource)throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource((javax.sql.DataSource) datasource);
bean.setMapperLocations(
// mybatis xml
new PathMatchingResourcePatternResolver().getResources("classpath:mapper2/*.xml")); bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
return bean.getObject();
}
public SqlSessionTemplate sqlsessiontemplateTwo(@Qualifier("sqlsessiontemplateTwo") SqlSessionFactory sessionfactory) {
return new SqlSessionTemplate(sessionfactory);
}
}
메모:1.@Primary 라 는 주 해 는 반드시 추가 해 야 합 니 다.추가 하지 않 으 면 spring 은 그 주요 데이터 소스(기본 데이터 소스)2,mapper 의 인터페이스,xml 형식 과 dao 층 을 구분 하지 못 하기 때 문 입 니 다.디 렉 터 리 는 그림 과 같 습 니 다.3、bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(“XXXX”));mapper 의 xml 형식 파일 위 치 를 설정 해 야 합 니 다.그렇지 않 으 면 오류 가 발생 합 니 다.no statement(이러한 오 류 는 mapper 의 xml 에서 namespace 와 프로젝트 의 경로 가 일치 하지 않 아서 발생 할 수도 있 습 니 다)
4.service 층 에서 서로 다른 업무 에 따라 서로 다른 dao 층 을 주입 합 니 다.
5.프로젝트 를 시작 하고 인 터 페 이 스 를 방문 하면 오류 가 발생 합 니 다.30 분 동안 보고 나 서 야 밑줄 과 낙타 봉 맵 이 실 패 했 습 니 다.이것 은 sqlSession Factory One 과 sqlSession Factory Two 에 bean.getObject().getConfiguration().setMapUnderscore ToCamelCase(true)를 추가 해 야 합 니 다.가능 합 니 다.그리고 계속 방문 하 십시오.Failed to obtain JDBC Connection 을 잘못 보 고 했 습 니 다.nested exception is com.my sql.jdbc.exceptions.jdbc 4.Communications Exception:Communications link failure.나중에 알 아 보 니 위의 데이터베이스 연결 url 에서&useSSL=true 를&useSSL=false 로 변경 해 야 합 니 다.
마지막 으로 테스트 해 보 니 두 데이터베이스 userInfo 와 user 표 의 데이터 가 모두 표시 되 었 습 니 다.
userInfo:
user:
마지막 으로 한 가지 오류 가 있 습 니 다.보충 을 잊 었 습 니 다.여기 서 제 springboot 은 2.x 버 전 입 니 다.하나의 데이터 원본 을 설정 할 때 데이터 베 이 스 를 연결 하 는 url 은 spring.datasource.url=xxx 입 니 다.이렇게 하면 문제 가 없습니다.그러나 다 중 데이터 원본 을 설정 할 때 spring.datasource.one.url 과 spring.datasource.to.url 은 jdbcUrl is required with driver ClassName 을 잘못 보고 합 니 다.spring.datasource.one.url 과 spring.datasource.to.url 의 url 을 spring.datasource.one.jdbc-url 로 바 꾸 면 됩 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.