发布时间:2023-01-19 文章分类:编程知识 投稿人:王小丽 字号: 默认 | | 超大 打印

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")