11、事务
事务的概念
事务指的是一个操作序列,该操作序列中的多个操作,要么都做,要么都不做,是一个不可分割的单位
事务的四大特性
1.原子性
事务是最小的执行单位,不允许分割,事务的原子性确保动作要么全部执行,要么全部不执行
2.一致性
执行事务的前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的
3.隔离性
各个事务的执行互不干扰
4.持久性
一个事务被提交后,他对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响
事务的并发问题
1.脏读
事务B修改数据后回滚,期间事务A读到的数据就是脏读
2.不可重复读
事务B修改数据导致事务A前后两次读取不一致
3.幻读
一个事务两次读取,中间进行了插入操作
事物的隔离级别
12、日志和测试
日志的级别
过滤规则:比日志设置级别低的信息就会忽略掉
trace:轻微痕迹,级别最低;
debug:调试日志;
info:普通信息,默认级别;
**warn:**警告,不影响使⽤,但需要注意的问题;
error:错误信息;
fatal:致命,代码异常导致程序退出执⾏的事件,级别最高;
使用日志框架
添加依赖
<!-- spring切面包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.3.5</version>
</dependency>
<!--aop联盟包-->
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
在resource目录下创建log4j2.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Appenders>
<!-- OUT打印黑色字体,ERR是红色 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH
ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<!-- 打印日志级别 -->
<Root level="debug">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
junit5单元测试
导入依赖包
<!-- junit5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
添加测试代码
//配置扫描的xml文件
@SpringJUnitConfig(locations = "classpath:applicationContext.xml")
public class Test{
@Autowired
private UserBean userBean;
@Test
public void testUserBean(){
}
}
评论( 0 )