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-事务实现原理的主要内容,如果未能解决你的问题,请参考以下文章