1,Spring事务管理的特点
Spring不但提供了和底层数据源无关的事务抽象,还提供了声明性事务的功能,可以让程序从事务代码中解放出来。事务管理必须满足的四个条件:原子性、一致性、隔离性、持久性。ThreadLocal在Spring的事务管理中起着重要作用。
2,ThreadLocal和线程同步机制的区别
名称 | 区别 |
ThreadLocal | 采用以空间换取时间的方法,为每一个线程提供一份变量,做到访问并行化,对象独享化 |
线程同步机制 | 以时间换取空间的方法,访问串行化,对象共享化,只有一份变量 |
3,Spring使用ThreadLocal解决线程安全问题
只有无状态的Bean才可以在多线程环境下共享。在Spring中,我们绝大部分Bean都可以声明为singleton作用域,就是因为Spring对一些Bean中非线程安全对象“状态性对象”采用了ThreadLocal封装,让有状态的Bean也成为了线程安全的,因此有状态的Bean就能够以singleton的方式在多线程中正常工作。
4,Spring对不同类型数据源事务管理处理方式的区别
类型 | 处理方式 |
单数据源 | 直接使用底层的数据源管理事务进行处理 |
多数据源 | 借助于Java EE应用服务器的支持,通过引用应用服务器的JNDI(Java命名和目录接口)资源完成事务处理 |