我们正在开发具有典型多模块场景的 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 ???
问题是,如果随着更新版本的 Spring 出现新服务,以前使用旧版本 Spring 开发的库是否会继续运行。
这要看情况。例如,如果您的应用程序使用旧版本 Spring 中存在但在新版本中已删除的 Spring 类、方法等,那么当您尝试运行代码时,很可能会出现类加载错误;例如
ClassNotFoundError
、NoSuchMethodError
等等。
如果您针对新版本的 Spring 重新编译了应用程序,那么这些问题(删除的类、方法等)将显示为编译错误。