java - Spring Boot RESTful——三层架构
问题描述
我是一名 dotnet 开发人员,但现在我将致力于 Spring Boot 应用程序。让我困惑的一件事是我们如何分离 API 层、服务层和存储库层。在 dotnet 项目中,我们为服务层和存储库层创建类项目,并为 API 或表示层创建 Web 项目。但是在基于 maven 的 spring boot 中似乎对这种方法并不熟悉。虽然我在 Maven 中发现您可以创建单独的模块,但不确定这是正确的方法。无论哪种方式正确,请分享一些示例实现。有什么好的开源项目可供我遵循并做出决定吗?
解决方案
根据项目的规模和定义模块边界的方式,有多种组织代码的方法。
例如,在我的公司,我们按业务领域将代码分成模块。我们有名为security
、schedule
、messaging
等的项目。每个项目都有自己的一组@Controller
(即 API 端点)@Service
和@Repository
. 像这样的东西。
configuration
是@Configuration
上课的。controller
是@Controller
上课的。db.domain
是@Entity
上课的。db.repo
用于@Repository
接口。service
是@Service
上课的。dto
用于将数据从@Entity
类转换为 API 端点的某种自定义格式的自定义类。
在您的情况下,如果您想为 和 拥有单独的项目,@Controller
您只需要使用 Maven 来声明您的项目之间的依赖关系。例如,项目应该将项目作为依赖项之一。@Service
@Repository
@Service
@Repository
在这种情况下,最好设置一个多模块 Maven 项目。随后,您可以非常轻松地声明任何项目之间的依赖关系。
推荐阅读
- pandas - 正则表达式的熊猫系列提取物
- java - java - 如何在Java中获得小时和分钟的时差/持续时间?
- javascript - // @flow: Uncaught ReferenceError: number is not defined
- r - 将置信水平传递给 ACF 图
- android - 无法使用 setOnCheckedChange(onCheckedChange) 获得开关侦听器
- xamarin - 如何将网络扩展 NEPacketTunnelProvider 类从 Obj-C/Swift 移植到 Xamarin C#?
- laravel - 如何使用 guzzle 从街景图像元数据中检索响应状态
- python - Alexa 技能套件后备意图未调用
- c++ - 我怎样才能让我的程序手动找到地址?
- javascript - 当我尝试用箭头移动时,为什么我的号码不移动?