如何解决在 pom.xml 和事务中使用 spring-boot-starter-data-jpa 和 spring-tx 的传统 spring boot 项目?
我正在使用一个遗留的 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 因为它需要不同的版本,然后会发生错误。这就是您需要使用满足两个依赖项的版本显式声明依赖项的时候。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。