【发布时间】:2017-04-15 14:20:36
【问题描述】:
我是弹簧靴的初学者。我参与了一个项目的开始,我们将使用 Spring Boot 构建休息服务。您能否建议在构建仅公开休息服务的项目时遵循推荐的目录结构?
【问题讨论】:
-
我有一个例子,我已经使用了几年。请看作为参考。 github.com/bigzidane/springboot-rest-h2-swagger
标签: java spring rest spring-boot
我是弹簧靴的初学者。我参与了一个项目的开始,我们将使用 Spring Boot 构建休息服务。您能否建议在构建仅公开休息服务的项目时遵循推荐的目录结构?
【问题讨论】:
标签: java spring rest spring-boot
虽然这个问题有一个公认的答案,但我仍然想分享我的 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
【讨论】:
legacy project,这使得开发新功能变得困难。它包含上百个控制器、服务和其他,这使得包不可读,需要搜索整个项目以保持约定。像this 这样的结构将单个所需功能的业务逻辑保留在单个包中。
来自docs:,这是推荐的方式
【讨论】:
2.2. Locating the Main Application Class
您确实不需要需要做任何特别的事情才能开始。从一个普通的 java 项目开始,maven 或 gradle 或 IDE 项目布局与 starter 依赖项。
按照指南here,您只需要一门主课,然后休息...
没有受限的包结构。实际结构将由您的需求/心血来潮驱动,目录结构由 build-tool / IDE 放置
您可以采用与 Spring MVC 应用程序相同的结构。
你可以选择任何一种方式
一个项目分为几层:
例如:DDD 风格
或
任何适合您正在编写问题的问题的层结构。
一个项目被划分为模块或功能或特性,一个模块被划分为像上面这样的层
我更喜欢第二种,因为它遵循业务上下文。从概念的角度思考。
你做什么取决于你如何看待这个项目。这是你的代码组织能力。
【讨论】:
config - 将从属性文件中读取的类
cache - 缓存机制类文件
constants - 常量定义类
控制器 - 控制器类
异常 - 异常类
模型 - 将出现 pojos 类
安全 - 安全类
服务 - 实现类
util - 实用程序类
验证 - 验证器类
bootloader - 主类
【讨论】:
使用 Link-1 生成项目。这是一个基本的学习项目。您可以了解文件夹结构。 使用 Link-2 创建一个基本的 Spring Boot 项目。 1:http://start.spring.io/ 2:https://projects.spring.io/spring-boot/
创建一个 gradle/maven 项目 自动创建 src/main/java 和 src/main/test。创建 controller/service/Repository 包并开始编写代码。
-src/main/java(源文件夹) ---com.package.service(包) ---服务类(类) ---com.package.controller(包) ---ControllerClass(类)
【讨论】:
请使用 Spring Tool Suite(基于 Eclipse 的开发环境,为开发 Spring 应用程序而定制)。
创建一个 Spring Starter 项目,它将为您创建带有 spring boot maven 依赖项的目录结构。
【讨论】: