我可以在另一个具有不同 Spring Boot 版本的项目中使用具有特定 Spring Boot 版本的编译库吗?

问题描述 投票:0回答:1

我们正在开发具有典型多模块场景的 Spring Boot 微服务。

parent-pom
  module 1 (api)
  module 2 (server)
    module1-api <-- as dependency

我们有一个服务器模块,其中包含业务逻辑、控制器等(Spring Boot 应用程序),并且我们有一个 api 模块,其中包含 DTO 文件和 feign 接口(不是 Spring Boot 应用程序)。

现在我们所有的应用程序都具有相同的 Spring Boot 版本,因此我们可以注入 api 依赖项来使用它们的方法并进行 REST 调用。

service 1 (Spring boot 2.7)
   service2-api
   service3-api

service 2 (Spring boot 2.7)
service 3 (Spring boot 2.7)

问题是,如果随着更新版本的 Spring 出现新服务,以前使用旧版本 Spring 开发的库是否会继续运行。

service 1 (Spring boot 2.7)
   service2-api
   service3-api

service 2 (Spring boot 2.7)
service 3 (Spring boot 2.7)

service 4 (Spring boot 3.2)
  service2-api (Spring boot 2.7) <--- Possible ???
java spring-boot jar spring-cloud spring-cloud-feign
1个回答
0
投票

问题是,如果随着更新版本的 Spring 出现新服务,以前使用旧版本 Spring 开发的库是否会继续运行。

这要看情况。例如,如果您的应用程序使用旧版本 Spring 中存在但在新版本中已删除的 Spring 类、方法等,那么当您尝试运行代码时,很可能会出现类加载错误;例如

ClassNotFoundError
NoSuchMethodError
等等。

如果您针对新版本的 Spring 重新编译了应用程序,那么这些问题(删除的类、方法等)将显示为编译错误。

© www.soinside.com 2019 - 2024. All rights reserved.