Spring Boot 项目设置设计决策

Posted

技术标签:

【中文标题】Spring Boot 项目设置设计决策【英文标题】:Spring Boot project setup design decisions 【发布时间】:2016-05-15 09:24:43 【问题描述】:

我们将使用 Spring Boot 来创建服务。我们最初的想法是每个服务(不一定是微服务)都是独立的,并部署为 .jar 文件。用于构建的 Maven。

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

选项:

    每个服务都是一个独立的 Spring Boot 项目。仅实现实际服务所需的实体、控制器和实用程序。

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

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

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

感谢您的帮助!

【问题讨论】:

对于自定义实用程序点,您可以考虑为其创建一个 Maven 依赖项。您可以在一个地方使用自定义实用程序,并可以使用该版本处理更改。 【参考方案1】:

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

每个服务都会使用这个 JAR/s 作为正常依赖。

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

    验证码 AOP 日志记录 一些常见的验证码 一些常见的域对象 异常处理

【讨论】:

以上是关于Spring Boot 项目设置设计决策的主要内容,如果未能解决你的问题,请参考以下文章

了解了下spring boot,说一下看法

构建一个简单的Spring Boot项目

Spring Boot 2.5 终于对数据源动刀了!

Spring Boot

spring boot的核心

Spring Boot 获得帮助