java - Spring boot RESTful - 三层架构

标签 java spring spring-boot maven

我是一名 dotnet 开发人员,但现在我将开发 Spring Boot 应用程序。让我困惑的一件事是我们如何分离 API 层、服务层和存储库层。在 dotnet 项目中,我们为服务和存储层创建类项目,并为 API 或表示层创建 Web 项目。但在基于maven的spring boot中似乎不熟悉这种方法。虽然我发现在 Maven 中你可以创建单独的模块,但不确定这是正确的方法。无论哪种方式正确,请分享一些示例实现。有什么好的开源项目可供我跟踪并做出决定吗?

最佳答案

根据项目的规模以及定义模块边界的方式,可以采用多种方法来组织代码。

例如,在我的公司,我们按照业务领域将代码分成模块。我们有一些名为securityschedulemessaging等的项目。每个项目都有自己的一组@Controller(这是 API 端点)、@Service@Repository。像这样的东西。

Project structure

configuration 用于@Configuration 类。 controller 用于@Controller 类。 db.domain 用于@Entity 类。 db.repo 用于@Repository 接口(interface)。 service 用于@Service 类。 dto 用于自定义类,它将数据从 @Entity 类转换为 API 端点的某种自定义格式。

就您而言,如果您想为 @Controller@Service@Repository 建立单独的项目,您只需使用Maven 来声明项目之间的依赖关系。例如,@Service 项目应将 @Repository 项目作为依赖项之一。

在这种情况下,最好设置 multi-module Maven project 。随后,您可以非常轻松地声明任何项目之间的依赖关系。

关于java - Spring boot RESTful - 三层架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524665/

相关文章:

java - 计算大根 : bigdecimal/java

java - 使用 OneToOne 映射在 Spring Hibernate 中反序列化异常

java - java对象类型的正确封装是什么

java - Spring 框架静态资源设置问题

java - 跳过特定表的创建 [Spring] [Hibernate]

java - 如何为同一个 Feign 客户端接口(interface)的不同配置文件切换 2 个注释

java - 由于没有 @Subcribe 方法,Android EventBus 应用程序在 Release模式下崩溃

java - 如何通过 @Id 使用 CrudRepository 进行批量删除?

java - Spring 配置附加位置作为 docker-compose 中的环境变量

java - Spring boot 应用程序无法在 PUT API 调用中映射 List 对象