Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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 Spring启动项目设置设计决策_Java_Spring_Spring Boot_Microservices - Fatal编程技术网

Java Spring启动项目设置设计决策

Java Spring启动项目设置设计决策,java,spring,spring-boot,microservices,Java,Spring,Spring Boot,Microservices,我们将使用SpringBoot创建服务。我们最初的想法是,每个服务(不一定是微服务)都是自包含的,并作为.jar文件部署。Maven用于构建 我想知道什么是一个好的Spring Boot项目结构,因为每个服务都是自包含的,但我猜服务仍然会有一些代码/实体,可以或应该在服务之间重用 选项: 每个服务都是一个独立的Spring引导项目。仅实现实际服务所需的实体、控制器和UTIL 好:每项服务都是完全独立的 坏:那么需要在服务之间重用的自定义实用程序类呢?服务可能需要共享的域对象呢 所有服务都在同一代

我们将使用SpringBoot创建服务。我们最初的想法是,每个服务(不一定是微服务)都是自包含的,并作为.jar文件部署。Maven用于构建

我想知道什么是一个好的Spring Boot项目结构,因为每个服务都是自包含的,但我猜服务仍然会有一些代码/实体,可以或应该在服务之间重用

选项:

  • 每个服务都是一个独立的Spring引导项目。仅实现实际服务所需的实体、控制器和UTIL

    好:每项服务都是完全独立的

    坏:那么需要在服务之间重用的自定义实用程序类呢?服务可能需要共享的域对象呢

  • 所有服务都在同一代码库中创建。所有服务都可以从所有其他服务中重复使用实用程序、控制器等 好:易于重复使用 坏:JVM现在可以为所有服务调用提供服务了吗?服务边界现在由负载平衡器处理


  • 谢谢你的帮助

    将公共逻辑放在单独的瘦JAR中,将其与服务分开放在您的工件存储库和版本中。这个公共库将作为独立项目存在(类似于您在项目中使用的其他JAR依赖项)

    每个服务都将使用这个JAR/s作为正常的依赖项

    我在团队中工作,我们在团队中使用这种方法:

  • 认证码
  • 用于日志记录的AOP
  • 一些常见的验证代码
  • 一些常见的域对象
  • 异常处理

  • 对于自定义实用程序,您可以考虑为其创建一个maven依赖项。您可以在一个位置使用自定义实用程序,并可以使用该版本处理更改。