2024年Java最全手动实现一下Mysql读写分离(1),2024Java开发社招面试总结

1200页Java架构面试专题及答案

小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞

百度、字节、美团等大厂常见面试题

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

增加双数据源的数据库配置

spring:

datasource:

datasource1:

url: jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&useAffectedRows=true

username: admin

password: 1024571

driver-class-name: com.mysql.jdbc.Driver

filters: stat,wall

initial-size: 1

min-idle: 1

max-active: 20

max-wait: 60000

time-between-eviction-runs-millis: 60000

min-evictable-idle-time-millis: 30000

validation-query: SELECT ‘x’

test-while-idle: true

test-on-borrow: false

test-on-return: false

pool-prepared-statements: false

max-pool-prepared-statement-per-connection-size: 20

datasource2:

url: jdbc:mysql://localhost:3307/user?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&useAffectedRows=true

username: admin

password: 1024571

driver-class-name: com.mysql.jdbc.Driver

filters: stat,wall

initial-size: 1

min-idle: 1

max-active: 20

max-wait: 60000

time-between-eviction-runs-millis: 60000

min-evictable-idle-time-millis: 30000

validation-query: SELECT ‘x’

test-while-idle: true

test-on-borrow: false

test-on-return: false

pool-prepared-statements: false

max-pool-prepared-statement-per-connection-size: 20

自定义注解

自定义数据源key的注解,value为数据源key

@Retention(RetentionPolicy.RUNTIME)

@Target({ElementType.METHOD})

public @interface DataSource {

String value() default “data1”;

}

数据源key设置

@Slf4j

public class DataSourceContextHolder {

private static final ThreadLocal contextHolder = new ThreadLocal<>();

// 设置数据源名称

public static void setDataSource(String dataSource){

contextHolder.set(dataSource);

}

public static String getDataSource(){

return contextHolder.get();

}

// 清除数据源

public static void clearDataSource(){

contextHolder.remove();

}

}

动态数据源类

public class DynamicDataSource extends AbstractRoutingDataSource {

@Override

protected Object determineCurrentLookupKey() {

return DataSourceContextHolder.getDataSource();

}

}

数据源配置类

定义双数据源的key和bean对应关系

@Configuration

public class DataSourceConfig {

/**

  • 数据源1

*/

@Bean(name = “data1”)

@ConfigurationProperties(prefix = “spring.datasource.data1”)

public DataSource Data1(){

return DataSourceBuilder.create().build();

}

/**

  • 数据源2

*/

@Bean(name = “data2”)

@ConfigurationProperties(prefix = “spring.datasource.data2”)

public DataSource Data2(){

return DataSourceBuilder.create().build();

}

/**

  • 数据源切换: 通过AOP在不同数据源之间动态切换

*/

@Primary

@Bean

public DataSource dynamicDataSource(){

DynamicDataSource dynamicDataSource = new DynamicDataSource();

//设置默认数据源

dynamicDataSource.setDefaultTargetDataSource(Data1());

//配置多数据源

Map<Object,Object> dsMap = new HashMap<>();

dsMap.put(“data1”,Data1());

dsMap.put(“data2”,Data2());

dynamicDataSource.setTargetDataSources(dsMap);

return dynamicDataSource;

}

/**

  • 配置@Transactional注解事务

  • @return

*/

@Bean

最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例

MyBatis答案解析
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

yb7MS-1714889614761)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值