【发布时间】:2021-06-23 10:51:25
【问题描述】:
我有一个带有数据库、Swing UI 等的大型应用程序。现在我想为这个应用程序添加一个 REST API。 Spring Boot 允许轻松生成具有 OpenApi 文档和身份验证等有用功能的 REST API。
但是,当我从大型非 Spring Boot 应用程序中运行 Spring Boot 应用程序时,Spring Boot 应用程序会被父应用程序的依赖关系混淆,并且无法运行。
所以我的要求是:从非 Spring Boot 应用程序运行 Spring Boot 应用程序,而不受父应用程序的依赖干扰。我目前正在通过将可执行 jar 添加为依赖项然后调用来运行 Spring Boot 应用程序
org.springframework.boot.loader.JarLauncher.main(new String[0]);
运行 Spring Boot 应用程序。我不打算这样做,任何建议都将不胜感激。
【问题讨论】:
-
您可以在同一个项目中拥有单独的模块,并为每个模块拥有单独的 build.gradle 文件。
-
@dkb 我已经尝试过了,但无法看到如何在另一个模块中运行 REST API 模块。不想让第二个模块成为 Spring Boot 应用程序,因为它是一个需要时间转换的大型项目。只要我可以从标准 Java 模块中运行 Spring Boot 模块,我就会很高兴拥有 2 个模块。我想要这样做的原因是我需要从标准的非 Spring Boot 模块中为 REST API 提供数据
-
您可以导出纯java模块的jar并将其添加为对spring boot模块的依赖
-
还是会有依赖问题。纯 Java 项目有许多依赖项,例如数据库、日志记录等,这些依赖项会干扰 Spring Boot,因为 Spring Boot 会尝试自动配置这些。我需要让 Spring Boot 忽略来自纯 Java 项目的所有依赖项
-
IMO 实现这一目标的最简洁方法是,正如其他人所说,完全分离这些模块(甚至是项目!) - 使工件和逻辑彼此独立。它将简化部署和进一步开发——原子性得到了回报:) 你之前说过,将它们解耦会花费你很多时间——你确定这不值得吗?你写的另一件事是这个 REST 模块依赖于桌面模块 - 为什么会这样?如果这是某些配置的问题,我敢打赌,您可以使用桌面客户端将使用的 REST 应用程序上的安全配置端点来实现相同的目标
标签: java spring-boot dependencies