将Spring Boot应用程序作为另一个Spring Boot应用程序的依赖项添加

4
我有一个名为A的Spring Boot应用程序,它是一个Spring Data服务,用于执行一些CRUD操作。现在我想将此A添加为依赖项到另一个Spring Boot应用程序B中,该应用程序只是一个REST服务,用于访问A的各种方法。当我这样做并启动B的Application类时,我看到应用程序A正在运行,并且所有配置都已完成并停止了。我想要实现的是应用程序B应该在8080端口上运行一个Tomcat,以便我可以访问应用程序B的CRUD方法。请问是否有人可以帮助我实现这个目标?
在撰写本问题之前,我已经搜索了论坛中所有相关主题,但未找到解决方案。

你是在使用Gradle还是Maven? - Krzysztof Atłasik
我正在使用Gradle。 - lsiva
1个回答

2
我有一个名为A的Spring Boot应用程序,它是一个Spring数据服务,用于执行一些CRUD操作。现在我想将此A作为依赖项添加到另一个Spring Boot应用程序B中,该应用程序仅是访问A的各种方法的rest服务。
根据所描述的需求,我不确定您是否需要两个Spring Boot应用程序。 拥有两个不同的基于Web的Spring Boot应用程序意味着这两个应用程序需要被物理分开。这种分离具有成本,因为您必须想办法允许应用程序之间进行通信:webservice,jms,rmi,jms等,并且您必须开发和维护两个Spring Boot应用程序,但是您说过
如果您想直接从B的rest服务中调用A的存储库方法,为什么要拥有两个不同的应用程序并使其更加复杂? 单个Spring Boot应用程序具有多个模块可能是更合适和可维护的解决方案:
- parent-my-app (super and parent project)
|
|----> repository-my-app module
|     
|   
|----> rest-my-app module    
                    |----> dependency on repository-my-app module  

为了得出结论,通过两个应用程序强度解耦两个层之间的通信具有成本,并且还需要处理两个Spring Boot应用程序。
因此,如果您不真正需要它,则应避免使用。

根据你提到的项目结构,我能理解这个意思。你能给我一些例子,展示如何创建这个父模块和子模块吗? - lsiva
我们之所以尝试这种方式的另一个原因是,我们希望许多其他团队能够使用应用程序A。不确定您提到的方法是否能够实现这一点。 - lsiva
这个页面非常适合了解如何使用Gradle:https://docs.gradle.org/current/userguide/intro_multi_project_builds.html#sec:structure_of_a_multiproject_build。它解释了使用Gradle进行多项目构建的基础知识。此外,在Gradle文件夹中,查看samples/userguide文件夹,您可以找到多个示例。 - davidxxx
我现在很清楚了,会尝试按照这种方式设置我的应用程序。 - lsiva
我想确保为您提供一个相关的解决方案。您能详细解释一下什么是“应用程序A被许多其他团队使用”吗?例如,是否需要在应用程序之间同步数据(如果一个应用程序更改了数据,则其他应用程序应该知道吗?)您是否需要将从存储库检索的数据放入中长期缓存中(例如JPA Level 2 Cache)? - davidxxx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接