如何构建不与数据库交互的 Spring Boot 项目

Posted

技术标签:

【中文标题】如何构建不与数据库交互的 Spring Boot 项目【英文标题】:How to structure a spring boot project that doesn't interact with a database 【发布时间】:2021-12-02 00:34:41 【问题描述】:

我使用过 Spring Boot + Data JPA,通常项目结构如下所示

my-app/
├─ com.company/
│  ├─ model/
│  ├─ controller/
│  ├─ service/
│  ├─ repository/
│  ├─ MyAppMainClass.java

每个文件夹在一般意义上代表其功能。

model/ has entity classes
controller/ has controller classes that have the routes configured for the app
service/ has service classes that have the logic to process a request
repository/ has repository classes that interact with the database and get the response back

现在我有一个非常简单的项目,其中没有数据库组件,但我需要做的就是调用一些其他 REST API 并返回响应。

那么我是否应该遵循相同的结构,只删除存储库文件夹并将所有对其他 REST API 的调用放在服务文件夹中的类中?

或者有没有其他更适合这个的结构?也许如果我对这一切的理解有一些不一致之处,请纠正我。谢谢:)

【问题讨论】:

【参考方案1】:

我会用消费者包替换存储库包。 并为每个资源创建一个消费者。

my-app/
├─ com.company/
│  ├─ model/
│  ├─ controller/
│  ├─ service/
│  ├─ consumer/
│  ├─ MyAppMainClass.java

【讨论】:

每个消费者的资源 - 你能解释一下什么是资源和消费者吗? (我的理解是资源是一个 .java 类,消费者是一个 API URL,我们称之为 ?。如果是这种情况,我该如何准确地填充这些类?) 资源是指其余架构给出的资源定义(例如 /api/user 定义了 UserResource)。消费者是您的数据源,而不是从数据库中加载数据,您将从外部资源中获取它们。如果我必须使用 User 资源,我将创建一个 UserConsumer 类,该类将负责创建 http 请求、处理身份验证/授权、进行 http 调用并处理任何重试机制【参考方案2】:

只需删除存储库包,

my-app/
├─ com.company/
│  ├─ model/
│  ├─ controller/
│  ├─ service/
│  ├─ MyAppMainClass.java

【讨论】:

以上是关于如何构建不与数据库交互的 Spring Boot 项目的主要内容,如果未能解决你的问题,请参考以下文章

想学会 Spring Boot 你必须深刻了解这些概念

Spring Boot 如何忽略 HttpStatus 异常

Spring Cloud:构建微服务 - Spring Boot

Spring Boot 学习之项目构建

spring boot + hibernate 如何实现前后端交互的。如果前台提交一个表单进行保存

Spring Boot快速构建应用