春季靴子休息项目的推荐项目结构是什么?

nic*_* m. 41 java rest spring spring-boot

我是春季靴子的初学者.我参与了一个项目的开始,我们将使用spring boot构建休息服务.在构建只暴露其他服务的项目时,您能否建议建议的目录结构?

小智 29

config - 将从属性文件中读取的类

缓存 - 缓存机制类文件

常量 - 常量定义的类

控制器 - 控制器类

异常 - 异常类

模特 - pojos课程将出席

安全 - 安全类

服务 - Impl课程

util - 实用程序类

验证 - 验证器类

bootloader - 主类

  • 这对于入门项目来说是有好处的。尽管如此,我认为拥有“例外”和“常量”等包是巧合分组的一个例子,如此处所述/sf/ask/57769701/单独包装。它还创建内聚力低到零的包,这在较大的应用程序中可能会出现问题。https://en.wikipedia.org/wiki/Cohesion_(computer_science) (7认同)

The*_*mer 22

你不会需要做什么特别的开始.从普通的java项目开始,可以是maven或gradle,也可以是具有启动器依赖关系的IDE项目布局.

你只需要一个主要课程,按照这里的指南和休息......

没有受约束的包结构.实际结构将由您的需求/异想天开驱动,目录结构由build-tool/IDE奠定

您可以遵循Spring MVC应用程序可能遵循的相同结构.

你可以按照任何一种方式

  • 一个项目分为几个层次:

    例如:DDD风格

    • 服务层:服务包包含服务类
    • DAO/REPO层:包含dao类的dao包
    • 实体层


    要么

    适合您正在编写问题的问题的任何层结构.

  • 项目分为模块或功能或特征,A模块分为如上所述的层

我更喜欢第二种,因为它遵循商业环境.从概念的角度思考.

你做的是取决于你如何看待项目.这是您的代码组织技能.


END*_*ESA 14

从docs:中,这是推荐的方式

在此处输入图片说明

  • 包裹。但包只是一个奇特的 Java 单词,表示其中包含 Java 类的文件夹。 (3认同)
  • 令许多人惊讶的是,通过这个结构包可以明智地扩展部门/模块,看起来也与我们通常使用的有点不同,例如。@Subhasish 回答,这又是开发人员/团队的偏好 (2认同)

Ama*_*dey 12

尽管此问题的答案已被接受,但我仍想与我分享RESTful服务的项目结构。

src/main/java
    +- com
        +- example
            +- Application.java
            +- ApplicationConstants.java
                +- configuration
                |   +- ApplicationConfiguration.java
                +- controller
                |   +- ApplicationController.java
                +- dao
                |   +- impl
                |   |   +- ApplicationDaoImpl.java
                |   +- ApplicationDao.java
                +- dto
                |   +- ApplicationDto.java
                +- service
                |   +- impl
                |   |   +- ApplicationServiceImpl.java
                |   +- ApplicationService.java
                +- util
                |   +- ApplicationUtils.java
                +- validation
                |   +- impl
                |   |   +- ApplicationValidationImpl.java
                |   +- ApplicationValidation.java
Run Code Online (Sandbox Code Playgroud)

DAO =数据访问对象。
DTO =数据传输对象。

  • 我强烈建议不要使用MyClassImpl和MyClass模式。需要时应引入抽象。因此,从具体的实现MyClass开始,如果有需要,您以后可以随时提取接口,并为“ Impl”之外的特定实现提供适当的名称 (2认同)
  • 这样的结构似乎很好,有一段时间......对于配置,util,也许还有验证类,它可以具有这种结构,但对于其他人,当有很多业务用例时,最好使用[this]中显示的文档结构答案](/sf/answers/3891355751/)否则会导致单个包(或多个子包)中有很多类。 (2认同)
  • 我目前正在处理具有上述结构的“遗留项目”,这使得开发新功能变得困难。它包含数百个控制器、服务等,这使得包不可读,并且需要搜索整个项目以保持约定。具有像[this](/sf/answers/3891355751/)这样的结构将单个所需功能的业务逻辑保留在单个包中。 (2认同)
  • DAO 和 DTO 是非常古老的学校,只需使用域 (2认同)

Ngh*_* Do 6

我有一个例子,我已经使用了几年。请看一下作为参考。

https://github.com/bigzidane/springboot-rest-h2-swagger


Ali*_*ahi 5

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-structuring-your-code.html提到了某种推荐的目录结构

您可以创建一个api文件夹并将您的控制器放在那里。

如果您有一些配置 bean,也将它们放在一个单独的包中。