如何构建不与数据库交互的 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 如何忽略 HttpStatus 异常
Spring Cloud:构建微服务 - Spring Boot