麻绳先生

做一些记录性的工作

spring的声明式事务控制

基于XML的声明式事务控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!--配置步骤-->
<!--配置事务管理器-->
<bean id="tansactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--配置事务的通知,此时需要导入事务的约束-->
<tx:advice id="txAdvice" transaction-manager="transactionManger"></tx:advice>
<!--配置事务的属性
isolation:用于指定事务的隔离等级,默认是DEFAULT,表示使用数据库的默认隔离等级;
propagation:用于指定事务的
-->
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" read-only="false"/></tx:method>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/></tx:method>
</tx:attributes>
</tx:advice>
<!--配置AOP-->
<!--配置AOP中的通用切入点表达式-->
<!--建立食物通知和切入点表达式的对应关系-->
<!--配置事务的属性,在事物的通知tx:advice标签内-->
<aop:config>
<!--配置切入点表达式-->
<aop:pointcout id="pt1" execution(* com.service.impl.*.*(..))"></aop:pointcut>
<!--建立切入点表达式和事务通知的对应关系-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"></aop:advisor>
</aop:config>

基于纯注解的声明式事务控制

  1. 配置事务管理器;
  2. 开启spring对注解事务的支持;
    • <tx:annotation-driven transaction-manager=”transactionManager”>
  3. 在需要事物支持的地方使用@Transactional

基于编程式事务控制

不够灵活

spring5新特性

  • 与JDK相关升级;
  • 核心容器更新;
  • JetBrains Kotlin语言支持;
    • 运行于在JVM上,独立语言;
  • 响应式编程风格;
  • Junit5支持;
  • 依赖类库的更新;