<!-- 分散配置 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置(主庫)資料源 -->
<bean id="dataSource-main" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverclass}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxPoolSize" value="${c3p0.pool.size.max}" />
<property name="minPoolSize" value="${c3p0.pool.size.min}" />
<property name="initialPoolSize" value="${c3p0.pool.size.ini}" />
<property name="acquireIncrement" value="${c3p0.pool.size.increment}" />
</bean>
<!-- 配置從庫資料源 -->
<bean id="dataSource-1" parent="dataSource-main">
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/lsn_surveypark001_1" />
</bean>
<!-- 資料源路由器 -->
<bean id="dataSourceRouter" class="com.surveypark.datasource.SurveyparkDataSourceRouter">
<!-- 目标資料源集合 -->
<property name="targetDataSources">
<map>
<entry key="odd" value-ref="dataSource-main" />
<entry key="even" value-ref="dataSource-1" />
</map>
</property>
<!-- 預設資料源集合 -->
<property name="defaultTargetDataSource" ref="dataSource-main" />
</bean>
public class SurveyparkDataSourceRouter extends AbstractRoutingDataSource {
protected Object determineCurrentLookupKey() {
SurveyparkToken token = SurveyparkToken.getCurrentToken();
if(token != null){
Integer id = token.getSurvey().getId();
SurveyparkToken.unbindToken();
return ((id % 2) == 0) ? "even" : "odd" ;
}
return null;
}
}
public class SurveyparkToken {
private static ThreadLocal<SurveyparkToken> l = new ThreadLocal<SurveyparkToken>();
private Survey survey ;
public Survey getSurvey() {
return survey;
}
public void setSurvey(Survey survey) {
this.survey = survey;
}
public static void bindToken(SurveyparkToken token){
l.set(token);
}
public static void unbindToken(){
l.remove();
}
public static SurveyparkToken getCurrentToken(){
return l.get();
}
}
SurveyparkToken token = new SurveyparkToken();
token.setSurvey(getCurrentSurvey());
SurveyparkToken.bindToken(token);
surveyService.saveAnswers(processAnswers());
捐助開發者
在興趣的驅動下,寫一個
免費
的東西,有欣喜,也還有汗水,希望你喜歡我的作品,同時也能支援一下。 當然,有錢捧個錢場(右上角的愛心标志,支援支付寶和PayPal捐助),沒錢捧個人場,謝謝各位。

謝謝您的贊助,我會做的更好!