SpringBoot AOP Mysql主从复制
1.原理
借助spring的【org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource】这个抽象类实现,来进行·数据源的路由,并通过Aop 进行路由选择。
2 配置主从数据源
###datasource
spring.datasource.master.driverClassName = com.mysql.jdbc.Driver
#多数据源时,为master
spring.datasource.master.url = jdbc:mysql://192.168.18.131:3339/usermanage
spring.datasource.master.username = root
spring.datasource.master.password = 123456
spring.datasource.slave.driverClassName= com.mysql.jdbc.Driver
多数据源时,为slave
spring.datasource.slave.url = jdbc:mysql://192.168.18.131:3340/usermanage
spring.datasource.slave.username =root
spring.datasource.slave.password =123456
---------------------
3定义HandleDataSource类来获取当前线程的数据源类型
/**
* Created by huanghengbo on 2019/8/21.
*/
public class HandleDataSource {
public static final ThreadLocal<String> holder = new ThreadLocal<String>();
/**
* 绑定当前线程数据源
*
* @param key
*/
public static void putDataSource(String datasource)
{
holder.set(datasource);
}
/**
* 获取当前线程的数据源
*
* @return
*/
public static String getDataSource()
{
return holder.get();