我使用的是一个遗留的Spring Boot项目,该项目在其pom.xml中列出了spring-boot-starter-data-jpa依赖项以及spring-tx依赖项(用于事务管理),如@EnableTransactionManagement管理注释等。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
我的问题是-这种依赖是多余的吗?默认情况下,spring-boot-starter-data-jpa不会为您管理事务吗?这样,注释和这个额外的"spring-tx“依赖就没有意义了?
发布于 2021-04-13 09:36:38
是的,如果您不想显式声明spring-tx与spring-boot-starter-data-jpa一起使用的版本,那么这是没有意义的。
唯一需要显式声明传递依赖项的情况是因为其他依赖项依赖于该传递依赖项版本。
示例:
A -> B -> C
D -> C
依赖项A需要B,但依赖项D也需要C。但由于导入依赖项C的最短路径是依赖项D,因此它将从依赖项D导入版本。如果此导入具有较低的版本,并且由于需要不同的版本而与依赖项A不兼容,则会发生错误。这就是你需要显式地声明依赖关系的版本,在这个版本中,两个依赖关系都会得到满足。
https://stackoverflow.com/questions/67066920
复制相似问题