SpringSpring整合以及事务控制
目录
【Spring】Spring整合以及事务控制
Spring整合以及事务
Spring整合
Spring整合Junit
导入依赖
创建测试类
也可以使用这种方法找到xml文件位置
Spring整合Mybatis
导入依赖
JDBC配置文件
spring核心xml文件配置
mybatis核心配置文件
dao接口和实现类
实现类对应mapper文件
sqlSessionFactoryBean
基础的MyBatis中获取sqlSessionFactory对象
Spring的xml文件中配置sqlSessionFactoryBean
实际上就是new了一个sqlSessionFactoryBean对象
这里是通过getObject()来获取sqlSessionFactory对象
源码:
Srping解耦合
三层架构
service实现类需要依赖dao实现类
没有spring的时候需要new dao接口的实现类
servlet没有实现类,要依赖service实现类
new了service的实现类
spring改进测试类
Spring事务
注解实现事务
spring配置文件
@Transactional添加事务
可以添加在方法和类上,添加到类就说明这个类所有的方法都支持事务
一般都在service层添加事务
事务的底层逻辑就是通过AOP增强解耦合
所以要加上AOP依赖
xml实现事务(可跳过)
传播行为 propagation (重点)
当 事务方法嵌套调用 时,需要控制是否开启新事务,可以使用事务传播行为来控制
@Transactional本质
我们需要 日志出现异常的时候不需要回滚转账事务
就需要控制事务的传播行为
默认情况下,外层test方法执行的时候有一个外层事务包裹,内层的转账和打印日志两个事务就加入这个外层的事务了, 本身不会有单独的事务包裹
我们可以给转账事务设置REQUIRES_NEW
这时候这个转账事务就会在外层test事务的包裹下还会新建一个自身单独的事务
转账完成后会自动提交
实际上就是new了一个新的连接对象,log还是和外层用一个连接对象