Spring MVC Mybatis 다중 데이터 소스 사용 사례 분석
그래서 바이두에서 살펴보니 Spring의 응용 프로그램 Context만 바꾸면 된다는 것을 알게 되었다.xml 파일과 세 가지 도구 클래스를 작성하면 완벽하게 실현할 수 있습니다
applicationContext.xml
<!-- -->
<bean id="ds1" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="" />
</bean>
<bean id="ds2" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="" />
<property name="url" value="" />
<property name="username" value="" />
<property name="password" value="" />
</bean>
<!-- -->
<bean id="dataSource" class="com.test.utils.DynamicDataSource">// DynamicDataSource.java
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry value-ref="ds_admin" key="ds1"></entry>
<entry value-ref="ds_partner" key="ds2"></entry>
</map>
</property>
<!-- ds1 -->
<property name="defaultTargetDataSource" ref="ds_admin"></property>
</bean>
DataSourceContextHolder.java
public class DataSourceContextHolder {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static void setDbType(String dbType) {
contextHolder.set(dbType);
}
public static String getDbType() {
return ((String) contextHolder.get());
}
public static void clearDbType() {
contextHolder.remove();
}
}
DataSourceType.java(정적 변수 설정)
public class DataSourceType {
//
public static final String SOURCE_ADMIN = "ds1";
// , applicationContext.xml id
public static final String SOURCE_PARTNER = "ds2";
}
다음은 Dynamic DataSource입니다.자바는 AbstractRoutingDataSource의 추상적인 방법인 determineCurrentLookupKey를 계승하여 데이터 원본을 실현하는 루트의 핵심이다.여기서 이 방법에 대해 Override를 진행합니다.
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class DynamicDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return DataSourceContextHolder.getDbType();
}
}
위에서 말한 것은 여러분에게 소개된 Spring MVC Mybatis 다중 데이터 원본의 사용 실례 해석입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.