java - pom.xml 和事务中包含 spring-boot-starter-data-jpa 和 spring-tx 的旧版 spring boot 项目?

标签 java spring spring-boot maven spring-transactions

我正在使用一个遗留的 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”依赖就毫无意义了吗?

最佳答案

是的,如果您不想显式声明 spring-tx 与 spring-boot-starter-data-jpa 一起使用的版本,则毫无意义。

您想要显式声明传递依赖项的唯一情况是因为其他依赖项依赖于该传递依赖项版本。

示例:

A -> B -> C

D -> C

依赖项 A 需要 B 需要 C,但是依赖项 D 也需要 C。但是由于导入依赖项 C 的最短路径是依赖项 D,因此它将导入依赖项 D 的版本。如果此导入版本较低并且不兼容如果使用依赖项 A,因为它需要不同的版本,则会出现错误。这时您需要使用满足两个依赖项的版本显式声明依赖项。

关于java - pom.xml 和事务中包含 spring-boot-starter-data-jpa 和 spring-tx 的旧版 spring boot 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67066920/

相关文章:

java - Spring JSON View

java - Java/Spring中接收POST请求并获取JSON元素

java - 我如何从网站提取一些数据并通过电子邮件发送

java - 自定义搜索建议未显示在 Android 应用程序中

java - 将类对象映射到通用对象

java - 无法使用配置的公钥验证 RSA 签名。签名长度不正确: got 255 but was expecting 256

java - 如何启动内存数据库来测试 JPA 实体?

java - 显示 JPanel 到 JFrame 另一个类

java - 在 Eclipse 中失去焦点时,如何阻止 TreeView 展开/折叠图标褪色?

java - spring boot jpa - 创建定义名称为 'entityManagerFactory' 的 bean 时出错