2023-01-19 Spring聲明式事務管理屬性 一、隔離級別 1、概念:一個事務與其他事務之間的隔離等級(1,2,4,8)。 2、隔離級別: (1)讀未提交(1):READ UNCOMMTTED 存在問題:臟讀(讀取到了未提交數據) (2)讀已提交(2):READ COMMTTED 存在問題: ...
2023-01-19
Spring聲明式事務管理屬性
一、隔離級別
1、概念:一個事務與其他事務之間的隔離等級(1,2,4,8)。
2、隔離級別:
(1)讀未提交(1):READ UNCOMMTTED
存在問題:臟讀(讀取到了未提交數據)
(2)讀已提交(2):READ COMMTTED
存在問題:可能出現不可重覆讀
(3)可重覆讀(4):REPEATABLE READ
存在問題:可能出現幻讀
(4)串列化(8):SERIALIZABLE
二、事務超時
1、設置事務超時時間,到達指定時間後會強制事務回滾
2、類型:int,單位:秒
3、預設值:-1(未設置強制回滾)
三、事務只讀(readonly)
1、一般事務方法中只有查詢操作時,才將事務設置為只讀
2、預設值:false
四、事務回滾
1、rollbackFor:設置回滾的異常Class
2、noRollbackFor:設置不回滾異常Class
五、基於XML方式,配置聲明式事務管理
六、Spring5新特性、新註解&整合log4j2
1、添加新註解
@Nullable作用
①位置:可以書寫在方法&屬性上面&參數前面。
②作用:表示當前方法或屬性可以為空,當前屬性為空時,消除空指針異常。
2、Spring5整合Log4j2
(1)導入jar包
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.11.2</version> <scope>test</scope> </dependency>
(2)編寫配置文件
<?xml version="1.0" encoding="UTF-8"?> <!--日誌級別以及優先順序排序:OFF>FATAL>ERROR>WARN>INFO>DEBUG>TRACE>ALL--> <!-- configuration後面的status用於設置log4j2自身內部的信息輸出,可以不設置,當設置成trace時,可以看到log4j2內部各種詳細輸出--> <configuration status="INFO"> <!-- 先定義所有的appender--> <appenders> <!-- 輸出日誌信息到控制台--> <console name="Console" target="SYSTEM_OUT"> <!-- 控制日誌輸出的格式--> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} -%msg%n"></PatternLayout> </console> </appenders> <!-- 然後定義logger,只有定義了logger並引入的appender,appender才會生效--> <!-- root:用於指定項目的根日誌,如果沒有單獨指定Logger,則會使用root作為預設的日誌輸出--> <loggers> <root level="DEBUG"> <appender-ref ref="Console"></appender-ref> </root> </loggers> </configuration>
七、Spring5整合Junit5
1、導入jar包(註:將Junit4的jar包刪除)
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.10</version> </dependency> <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.7.2</version> <scope>test</scope> </dependency>
2、使用註解整合即可
(1)整合方式一
@ContextConfiguration(locations = "classpath:applicationContext_transactionmanager.xml") @ExtendWith(SpringExtension.class)
(2)整合方式二
@SpringJUnitConfig(locations = "classpath:applicationContext_transactionmanager.xml")