이 프로젝트는 다른 웹사이트에서 데이터를 얻어야 하는 작업이기 때문에 프로젝트를 시작할 때 여러 데이터 소스가 필요할 것이라고는 예상하지 못했습니다.
그래서 Baidu에서 검색해 보니 Spring applicationContext.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>
>
DataSourceType.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(); } }다음은 DynamicDataSource.java 키입니다. 이는 AbstractRoutingDataSource의 definCurrentLookupKey를 상속하며 데이터 소스를 구현하는 경로의 핵심입니다. 여기서 이 메서드를 재정의합니다.
public class DataSourceType { // 默认数据库 public static final String SOURCE_ADMIN = "ds1"; // 第二个数据库,在applicationContext.xml里的id public static final String SOURCE_PARTNER = "ds2"; }위는 편집자가 소개한 Spring MVC Mybatis 다중 데이터 소스의 사용 사례를 분석한 내용입니다. 궁금한 점이 있으시면 도움이 되시기 바랍니다. 나에게 메시지를 남겨주세요. 편집자가 제 시간에 모든 사람에게 답변을 드릴 것입니다. 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다! Spring MVC Mybatis 다중 데이터 소스의 사용 사례 분석과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!