最后
面试题文档来啦,内容很多,485页!
由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。
1111道Java工程师必问面试题

MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:

Elasticsearch 24 题 +Memcached + Redis 40题:

Spring 26 题+ 微服务 27题+ Linux 45题:

Java面试题合集:

本篇博客将通过手写一个Demo来分析Spring事务底层到底是如何帮助我们轻松完成事务管理的!
透彻理解Spring事务设计思想之手写实现
推荐一个 Spring Boot 基础教程及实战示例: https://www.javastack.cn/categories/Spring-Boot/
先来看一眼工程结构:

ConnectionHolder

在Spring中,有时候我们是不是要配置多个数据源DataSource?很显然,Spring需要通过DataSource来得到操作数据库的管道Connection,这有点类似于JNDI查找。
这里通过ConnectionHolder类来完成这个过程,需要思考的是在多线程下,这显然是存在问题的。为避免多线程问题,难道我们采用线程安全的Map,比如ConcurrentHashMap,其实我们真正的目的是什么?是保证一个线程下,一个事务的多个操作拿到的是一个Connection,显然使用ConcurrentHashMap根本无法保证!
Spring很聪明,她提供了一种思路,来解决,看下面的代码!
SingleThreadConnectionHolder

本来线程不安全的,通过ThreadLocal这么封装一下,立刻就变成了线程的局部变量,不仅仅安全了,还保证了一个线程下面的操作拿到的Connection是同一个对象!这种思想,确实非常巧妙,这也是无锁编程思想的一种方式!
TransactionManager

TransactionManager,这个我们经常在Spring里面进行配置吧,事务大管家!另外,Spring 系列面试题和答案全部整理好了,微信搜索Java技术栈,在后台发送:面试,可以在线阅读。
UserAccountDao、UserOrderDao


这里通过这2个DAO,想模拟一个事务中账户购买、下单2个操作。
UserService

到这里,可以清晰的看到Spring事务管理的一个缩影了吧!
Test

最后






由于篇幅原因,就不多做展示了
//bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

6065

被折叠的 条评论
为什么被折叠?



