MySql读写分离的配置(AOP)

来源:互联网 发布:绿色便携软件网站 编辑:程序博客网 时间:2024/05/06 05:21

MyBaties.xml配置

#db driver master option-------
master.jdbc.driver=com.mysql.jdbc.Driver
#db url
master.jdbc.url=jdbc:mysql://127.0.0.1:3307/p2p?useUnicode=true&characterEncoding=utf-8
#db username
master.jdbc.username=root
#db password
master.jdbc.password=
#db maxActive
master.jdbc.maxActive=2
#db minIdle
master.jdbc.minIdle=5
#db maxIdle
master.jdbc.maxIdle=5


#db driver  slave option-------
slave.jdbc.driver=com.mysql.jdbc.Driver
#db url
slave.jdbc.url=jdbc:mysql://127.0.0.1:3308/p2p?useUnicode=true&characterEncoding=utf-8
#db username
slave.jdbc.username=root
#db password
slave.jdbc.password=
#db maxActive
slave.jdbc.maxActive=2
#db minIdle
slave.jdbc.minIdle=5
#db maxIdle

<!-- ███读写分离 --><!-- 配置主数据源 获取数据源 --><bean id="parentDataSource" class="org.apache.commons.dbcp.BasicDataSource"></bean><bean id="masterdataSource" parent="parentDataSource"><property name="driverClassName" value="${master.jdbc.driver}" /><property name="url" value="${master.jdbc.url}" /><property name="username" value="${master.jdbc.username}" /><property name="password" value="${master.jdbc.password}" /><!--maxActive: 最大连接数量 --><property name="maxActive" value="${master.jdbc.maxActive}" /><!--minIdle: 最小空闲连接 --><property name="minIdle" value="${master.jdbc.minIdle}" /><!--maxIdle: 最大空闲连接 --><property name="maxIdle" value="${master.jdbc.maxIdle}" /></bean><!-- 配置从数据源 获取数据源 --><bean id="slavedataSource" parent="parentDataSource"><property name="driverClassName" value="${slave.jdbc.driver}" /><property name="url" value="${slave.jdbc.url}" /><property name="username" value="${slave.jdbc.username}" /><property name="password" value="${slave.jdbc.password}" /><!--maxActive: 最大连接数量 --><property name="maxActive" value="${slave.jdbc.maxActive}" /><!--minIdle: 最小空闲连接 --><property name="minIdle" value="${slave.jdbc.minIdle}" /><!--maxIdle: 最大空闲连接 --><property name="maxIdle" value="${slave.jdbc.maxIdle}" /></bean>   <!-- 配置数据源主从关系以及实现类 --><bean id="dataSource" class="com.jk.provide.aop.DynamicDataSource"><property name="targetDataSources"><map key-type="java.lang.String"> <entry key="slave" value-ref="slavedataSource"/></map></property><property name="defaultTargetDataSource" ref="masterdataSource"></property></bean>   <!-- 配置数据源切换 --><bean id="dataSourceAdvice" class="com.jk.provide.aop.DataSourceAdvice"/><aop:config><aop:advisor pointcut="execution(* com.jk.provide.service..*Impl.*(..))" advice-ref="dataSourceAdvice"/></aop:config><!-- ███读写分离 -->

JDBC配置

#db driver master option-------master.jdbc.driver=com.mysql.jdbc.Driver#db urlmaster.jdbc.url=jdbc:mysql://127.0.0.1:3307/p2p?useUnicode=true&characterEncoding=utf-8#db usernamemaster.jdbc.username=root#db passwordmaster.jdbc.password=#db maxActivemaster.jdbc.maxActive=2#db minIdlemaster.jdbc.minIdle=5#db maxIdlemaster.jdbc.maxIdle=5#db driver  slave option-------slave.jdbc.driver=com.mysql.jdbc.Driver#db urlslave.jdbc.url=jdbc:mysql://127.0.0.1:3308/p2p?useUnicode=true&characterEncoding=utf-8#db usernameslave.jdbc.username=root#db passwordslave.jdbc.password=#db maxActiveslave.jdbc.maxActive=2#db minIdleslave.jdbc.minIdle=5#db maxIdle

Mybaties中切面类的具体写法

package com.jk.provide.aop;import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;import org.springframework.aop.MethodBeforeAdvice;import org.springframework.aop.ThrowsAdvice;/** * @author 作者 lxx: * @version 创建时间:2017年11月19日 下午12:17:19 * 类说明 */public class DataSourceAdvice implements MethodBeforeAdvice,AfterReturningAdvice,ThrowsAdvice {@Overridepublic void before(Method method, Object[] args, Object target) throws Throwable {System.out.println("切入点:"+target.getClass().getName()+"类中 "+method.getName()+"方法");//指定xx开头名,走主库if(method.getName().startsWith("add")||method.getName().startsWith("save")){System.out.println("切换到主数据源");DataSourceSwitcher.setMater();}else {//指定xx开头名,走从库if(method.getName().startsWith("get")||method.getName().startsWith("query")){System.out.println("切换到:slave");DataSourceSwitcher.setSlave();}}}@Overridepublic void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {}public void afterThrowing(Method method, Object[] args, Object target,Exception ex) throws Throwable{DataSourceSwitcher.setSlave();System.out.println("出现异常切换到slave");}}


原创粉丝点击