1.Spring中Ioc和DI的区别
Ioc是一种思想,DI是具体的实现方式。
2.Spring的事务传播机制是什么?
REQUIRED:默认的传播机制,如果当前没有事务,则创建一个新的事务,如果当前存在事务,则假如这个事务。
SUPPORTS:当前存在事务,则加入当前事务,如果没有事务,则以非事务的方式执行。
MANDTORY:当前存在事务,则加入当前事务,如果当前不存在事务,则抛出异常。
REQUIRED_NEW:创建一个新事务,如果当前存在事务,则挂起该事务。
NOT_SUPPORTED:以非事务方式执行,如果存在事务,则挂起当前事务。
EVER:不使用事务,如果当前存在事务,则抛出异常。
NESTED:如果当前事务存在,则在嵌套事务中执行,否则和REQUIRED的操作一样。
3.spring事务的隔离级别
read uncommitted(读未提交):一个事务可以读取到另一个事务未提交的数据,会产生脏读。
read committed(读已提交):一个事务只能读取到另一个事务提交过的不同版本的数据,但依然会产生不可重复读。不可重复读就是在同一个事务中,执行同一个查询,而查询的数据不同。
repeatable read(可重复读):在同一个事务中,多次查询同一条数据,查出来的结果是相同的。解决了脏读和不可重复读的问题。但依然存在幻读的问题。幻读就是在一个事务中,多次执行同一个查询,查询出的数据条数不同。
serializable(串行化):最高的隔离级别,事务按顺序执行,确保每次事务的读取和写入都不会与其他事务发生并发冲突。
4.Spring事务的实现方式的原理是什么?
spring事务操作是AOP的核心体现,当一个方法添加了@Transaction注解之后,spring会基于这个类生成一个代理对象,当使用这个代理对象的时候,如果有事务处理,那么会把事务的自动提交关闭,然后去执行具体的业务逻辑,如果执行没有出现异常,那么代理逻辑就会直接提交,如果出现任何异常情况,那么直接回滚。
5.