• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

spring-dbutil: 切换spring数据源的工具,使用aop注解方式进行快速切换,减少编码的 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

spring-dbutil

开源软件地址:

https://gitee.com/hand515/spring-dbutil

开源软件介绍:

#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

不使用aspect,这种方式提供了支持@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人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap