Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Maven和Spring Boot的多API项目的最佳实践_Java_Spring_Spring Boot_Maven - Fatal编程技术网

Java 使用Maven和Spring Boot的多API项目的最佳实践

Java 使用Maven和Spring Boot的多API项目的最佳实践,java,spring,spring-boot,maven,Java,Spring,Spring Boot,Maven,我正在从事一个项目,该项目需要开发两个连接到同一数据库的独立API 管理API 这是一个内部的非公共API,包含用于管理多个资源的端点。当然,这些资源会持久保存在数据库中 公共API 另一个是包含端点的公共API,用于列出上述某些资源并执行不在数据库中持久化的操作 到目前为止,我只想使用springinitilizr创建一个Maven Spring启动项目,并提供所需的依赖项,然后开始开发。。。可以想象,这将导致一个没有任何分离的大型整体项目,不必要地增加技术债务 对于这种情况,什么是最佳解决方

我正在从事一个项目,该项目需要开发两个连接到同一数据库的独立API

管理API

这是一个内部的非公共API,包含用于管理多个资源的端点。当然,这些资源会持久保存在数据库中

公共API

另一个是包含端点的公共API,用于列出上述某些资源并执行不在数据库中持久化的操作

到目前为止,我只想使用springinitilizr创建一个Maven Spring启动项目,并提供所需的依赖项,然后开始开发。。。可以想象,这将导致一个没有任何分离的大型整体项目,不必要地增加技术债务

对于这种情况,什么是最佳解决方案?

大概是这样的:

  • 项目名称数据:数据层。包含数据库模型和接口
  • 项目名称管理api:使用项目名称数据作为依赖项的管理api
  • projectname公共api:公共api,使用projectname数据作为依赖项

    • 除非您真的需要它,否则我不会从一开始就将服务划分为更多的服务。 只要有一个单独的控制器和应用于每个控制器的不同访问/控制要求,您就可以开始了

      会让你开始考虑拆分它们的事情。。。根据你的解释,基本上是缩放。如果公共API必须比管理API具有更大的可扩展性,那么您可能会开始考虑使其更轻,而不是同时扩展管理。与访问相关的严格限制也可能是一个问题

      但是,除非是这样,而且你从一开始就很清楚,否则不要为这么简单的事情付出从一开始就拥有多个服务的代价。除非你在发疯,一旦你有了正确的基础,你应该有时间和一个关于如何在未来划分它们的更清晰的观点

      “额外服务”不是免费的

      这是我的2ec;)。 干杯
      PD:我们有很多这样的服务和内部工具,到目前为止,没有必要将它们分开。我曾在其他地方咨询过,我们从一开始就开始划分,但没有内部工具,这样我们就不会直接共享同一个DB。

      正如您所想象的那样,这将导致一个没有任何分离的大型整体项目,不必要地增加技术债务。
      这是一个假设。你的API有多大?他们完全分开了吗?模块化的monolith并不一定是坏的,特别是如果你使用同一个数据库,并且你的模块是同一个域的一部分,我想你是对的。。。我只是说,因为我有多个项目,一开始都很简单,但随着时间的推移,它不断增长,因为需求不断演变和变化,在大多数情况下,我希望我能浪费一些时间重新组织和划分项目