spring-事务实现原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-事务实现原理相关的知识,希望对你有一定的参考价值。

spring事务的实现原理:aop。

 

aop的两种实现方式:

1.动态代理:

   事务方法与调用方法不能在同一个类中,否则事务不生效。解决方案,自己注入自己(实质注入的是代理类)。

   实现方式:jdk动态代理(只能代理接口)  或者  cglib动态代理(代理接口或者类)

2.编译时,更改字节码文件。解决方案,使用额外的编译插件。以aspect为例:

  (1)引入jar包

<!-- aspectj-maven-plugin 需要的jar -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.7</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<!-- aspectj-maven-plugin 需要的jar结束 -->

(2)使用插件
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<source>${java_source_version}</source>
<target>${java_target_version}</target>
<complianceLevel>${java_target_version}</complianceLevel>
<encoding>UTF-8</encoding>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
</plugin>
</plugins>
</build>

   

以上是关于spring-事务实现原理的主要内容,如果未能解决你的问题,请参考以下文章

Spring的事务与AOP实现原理

Spring嵌套事务原理

一Spring事务开启原理

spring-事务实现原理

spring实现事务原理

浅析Spring事务实现原理