1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hand515-spring-dbutil

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

#dbutil

Описание

На основе Spring AbstractRoutingDataSource выполнена простая упаковка для удобства переключения между источниками данных. В настоящее время используется в основном для чтения и записи из главной и подчинённой баз данных.

Использование

Добавление зависимости

<dependency>
    <groupId>com.tanghd.spring</groupId>
    <artifactId>dbutil</artifactId>
    <version>0.2</version>
</dependency>

Конфигурация xml (spring + mybatis)

<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.

Aspect

  • Требуется зависимость от spring-aspects, aspectjrt, aspectjweaver.
  • Конфигурация spring xml:
<?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(){
    ...
}

SpringAOP

Не использует аспект, этот способ предоставляет поддержку @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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hand515-spring-dbutil.git
git@api.gitlife.ru:oschina-mirror/hand515-spring-dbutil.git
oschina-mirror
hand515-spring-dbutil
hand515-spring-dbutil
master