#dbutil
На основе Spring AbstractRoutingDataSource выполнена простая упаковка для удобства переключения между источниками данных. В настоящее время используется в основном для чтения и записи из главной и подчинённой баз данных.
<dependency>
<groupId>com.tanghd.spring</groupId>
<artifactId>dbutil</artifactId>
<version>0.2</version>
</dependency>
<bean id="dataSource" ...></bean>
<bean id="slaveDataSource1" ...></bean>
<bean id="slaveDataSource2" ...></bean>
<bean id="dynamicDataSource" class="com.tanghd.spring.dbutil.datasource.DynamicDataSource">
<property name="master" ref="dataSource"/>
<property name="slaves">
<list>
<value ref="slaveDataSource1"/>
<value ref="slaveDataSource2"/>
</list>
</property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dynamicDataSource" />
...
</bean>
public void queryXXX(){
DynamicDataSource.useSlave();
try{
...
}finally{
DynamicDataSource.reset();
}
}
Можно использовать Spring-AOP для расширения, чтобы уменьшить вмешательство в код. В настоящее время поддерживается Aspect и Spring-AOP.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="DsChangeAspect" class="com.tanghd.spring.dbutil.aop.DataSourceAspect"/>
<!--proxy-target-class = true 使用cglib代理,否则使用Java动态代理-->
<aop:aspectj-autoproxy proxy-target-class="true" />
</beans>
@DataSourceChange(slave=true)
public void queryXXX(){
...
}
Не использует аспект, этот способ предоставляет поддержку @See DataSourceAdvisor.java. На данный момент не используется. Пример опущен, только конфигурация отличается от Aspect, а использование аналогично через аннотацию для изменения текущего используемого источника данных. Вот пример:
<bean id="advisor" class="com.tanghd.spring.dbutil.aop.DataSourceAdvisor" />
<aop:config proxy-target-class="true">
<aop:advisor advice-ref="advisor"
pointcut="@annotation(com.tanghd.spring.dbutil.aop.DataSourceChange)" />
</aop:config>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )