介绍

Spring Boot是一个用于构建根据Spring结构的分布式运用程序的结构。它经过供给丰厚的功用和东西,使咱们能够更快速、更轻松地创建和保护运用程序。Spring Boot利用了Spring结构的中心概念,如依靠注入、面向切面编程等,使咱们能够愈加专心于事务逻辑的完成。阅览 Spring Boot 工程是学习和运用 Spring Boot 结构的必要步骤之一。

昨天有个小伙伴私信我问了一个问题:“网上的Springboot开源项目看不懂不知从何下手、进入公司怎么快速上手交代的项目?”,正好最近我这边也经历了这个工作:公司搭档离职某个测验质量平台交代给了我,但是无任何文档说明、项目工程无readme文件。下面,就以我自己的阅览方法来做一个概述,不足之处欢迎各位大佬指正

快速阅读SpringBoot工程
(承受反驳,真的)

☀️本地发动

clone工程到本地

快速阅读SpringBoot工程

快速阅读SpringBoot工程

装备发动器

快速阅读SpringBoot工程

修改本地环境装备文件中的本地mysql衔接(如有)

快速阅读SpringBoot工程

发动工程,将项目在本地跑起来

快速阅读SpringBoot工程

️了解项目架构

首要咱们需求了解这个项目是做什么的(供给什么样能力的工程)、项目运用了哪些技术 如:A项目,首要用于给测验平台X供给接口服务能力,首要运用的技术栈能力包含:mysql、mybatis、zookeeper、elasticsearch、netty、Spring、redis…等

⛅️检查项目结构

Spring工程一般是选用分层思维进行开发,分层长处是每层只专心本层作业做自己最擅长的工作,层与层之间会经过适配器进行通讯。分层思维需求满意的规则如下:

  • 单一:每层只处理一类工作,满意单一责任准则
  • 降噪:信息在每一层进行传输,满意最小常识准则,只向基层传输必要信息
  • 适配:每层都需求一个适配器,翻译信息为本层或者基层能够了解的信息
  • 事务:事务目标能够整合事务逻辑
  • 数据:数据目标尽量纯净,尽量不要聚合事务

SpringBoot工程能够分为九层

  • 东西层:util
    • 东西层承载东西代码。不依靠本项目其它模块,只依靠一些通用东西包
  • 整合层:integration
    • 可能会依靠外部服务,那么将外部DTO转换为自己项目能够了解的目标,需求在integration层处理
  • 基础层:infrastructure
    • 基础层中心是承载数据拜访,entity实体目标承载在本层。只依靠东西模块
  • 服务层:service
    • 中心代码
  • 范畴层:domain
    • 范畴目标需求体现事务意义(范畴目标选用充血模型聚合事务)、事务目标
    • 事务层能够愈加灵敏组合不同范畴事务,而且能够增加流控、监控、日志、权限,分布式锁等操控,相较于范畴层功用更为丰厚
  • 门面层:facade
    • 承载对外服务
  • 操控层:controller
    • 作为本项目HTTP接口供给服务,供前端调用
  • 客户端:client
    • 承载数据对外传输目标DTO
  • 发动层:boot
    • 发动层,只有发动进口代码

需求了解的是,这东西并没有一套通用的标准,不同公司或者团队的运用习惯和规范也不尽相同。

以上理论参阅文章SpringBoot工程分层实战cloud.tencent.com/developer/a…

简单来说,能够从如下几个方面去借鉴考虑:

  1. 运用程序主模块(Application):该模块是整个运用程序的进口点,负责发动和办理其他模块。
  2. 依靠项模块(Dependency):该模块包含了运用程序所需的所有依靠项,如Spring Boot Starter、Spring Data等。这些依靠项能够经过Maven或Gradle等构建东西进行办理。
  3. 事务逻辑模块(Business):该模块包含了运用程序的中心事务逻辑,一般由多个Spring组件组成,如操控器(Controller)、服务(Service)、实体类(Entity)等。
  4. 测验模块(Test):该模块包含了运用程序的单元测验和集成测验代码,以确保运用程序的质量和稳定性。

快速阅读SpringBoot工程

快速阅读SpringBoot工程

️目录结构及文件

一般,Spring Boot 工程的首要文件结构包含 src/main/java 目录src/main/resources 目录pom.xml 文件

  • src/main/java 目录包含了项目的 Java 代码
  • src/main/resources 目录包含了项目的静态资源、装备文件等
  • src/test/java 目录首要放置项目测验用例代码
  • pom.xml 文件是 Maven 的装备文件,用于办理项目的依靠和构建方法

这儿估量还有同学会问关于DTO/VO/DO等数据模型界说的区别,参阅《阿里巴巴Java开发手册》中界说如下:

  • DO(Data Object):与数据库表结构一一对应,经过DAO层向上传输数据源目标。
  • DTO(Data Transfer Object):数据传输目标,Service或Manager向外传输的目标。
  • BO(Business Object):事务目标。由Service层输出的封装事务逻辑的目标。
  • AO(Application Object):运用目标。在Web层与Service层之间笼统的复用目标模型,极为贴近展现层,复费用不高。
  • VO(View Object):显现层目标,一般是Web向模板烘托引擎层传输的目标。
  • Query:数据查询目标,各层接收上层的查询请求。留意超越2个参数的查询封装,制止运用Map类来传输。

个人觉得,只需保证事务逻辑层Service和数据库DAO层的操作目标严格划分出来,确保互相不浸透不混用即可

对应上面的项目代码结构,假设一个用户拜访一个页面接口请求到后端,流程大概如下:(图片参阅来自知乎用户@CodeSheep程序羊)

快速阅读SpringBoot工程

对应代码目录的流转逻辑就是:

快速阅读SpringBoot工程

☁️检查装备文件

Spring Boot 运用程序一般运用 application.propertiesapplication.yml 等装备文件来装备运用程序的特点、环境变量、数据库衔接等。咱们能够经过检查这些装备文件,了解运用程序的环境和装备信息,并了解其间运用的技术和结构。经过检查装备文件,咱们能够更快速地掌握运用程序的中心装备和逻辑。在这一步,咱们能够检查到Spring工程发动端口、测验环境数据库的衔接地址、其他装备变量等。

️检查发动类

Spring Boot 运用程序一般有一个进口类,咱们能够从这个类开端检查工程代码。该类一般被标注为 @SpringBootApplication,包含了 Spring Boot 运用程序的装备和初始化逻辑。咱们能够经过检查发动类,快速了解运用程序的首要装备和初始化进程,以便更好地了解运用程序的整个运行流程。在这一步,咱们能够将发动装备中的Main Class装备为该进口类。

快速阅读SpringBoot工程

️剖析操控器层

在 Spring Boot 工程中,操控器层一般是运用程序的进口点,负责处理 HTTP 请求和呼应。咱们能够经过检查操控器层的代码,了解运用程序的接口和事务逻辑,并了解数据的传递和处理进程。在源码中,咱们能够看到Spring Boot运用 @Controller 注解来标识操控器类,并运用 @RequestMapping 注解来指定请求的处理方法。

@RestController
@RequestMapping("/api/testdemo/alarminfo")
public class AlarmManagerController {
	@Autowired
	AlarmManagerService alarmManagerService;
	@RequestMapping(value = "/detail", method = RequestMethod.POST)
	public Result alarmDetail(@ModelAttribute("alarmManagerDto") AlarmDetailDto alarmDetailDto){
		...
	}
}

⛈️剖析服务层

在 Spring Boot 工程中,服务层一般是运用程序的中心事务逻辑所在。在源码中,咱们能够看到Spring Boot运用 @Service 注解来标识服务类,并界说各种事务逻辑方法。咱们能够经过检查服务层的代码,了解运用程序的事务逻辑和数据处理进程,并了解其间运用的技术和结构。

@Service
@Slf4j
public class AlarmManagerServiceImpl implements AlarmManagerService {
	...
}

️了解依靠联系

Spring Boot 运用程序一般依靠于许多二方三方库和结构。咱们能够经过检查 pom.xml 文件和运用程序的依靠联系,了解运用程序所依靠的库和结构,并了解它们是怎么相互效果的。了解运用程序的依靠联系,能够更好地了解运用程序的全体结构和完成方法。

快速阅读SpringBoot工程

️调试&阅览源码

阅览项目源码并调试(可结合某个功用来运用,一个组件或一个接口,咱们能够经过debug、看报错信息、看日志信息、打印变量等方法来进行快速了解)

❄️新增需求

增加自己需求的接口、模块、功用代码

了解Spring Boot规划思路

了解Spring Boot的规划思路能够协助咱们更好地了解和运用该结构

  1. 约好优于装备:Spring Boot经过约好来减少开发者需求手动装备的内容。例如,Spring Boot能够根据环境变量主动装备数据库衔接池等组件。
  2. 主动装备:Spring Boot经过主动装备来简化开发进程。它经过扫描运用程序中的各种组件,并根据需求主动装备它们。这使得开发者能够愈加专心于完成事务逻辑。
  3. 面向切面编程(AOP):Spring Boot支持面向切面编程,使得开发者能够愈加轻松地完成跨模块的功用,如日志记录、性能监控等。
  4. 分布式布置:Spring Boot支持分布式布置,使得运用程序能够愈加轻松地扩展和布置到不同的服务器上。

反思总结

  1. 了解Spring Boot的中心概念:在阅览Spring Boot工程之前,咱们需求先了解其间心概念,如依靠注入、面向切面编程等。这有助于咱们更好地了解工程中的各个组件和代码完成。
  2. 关注工程的结构和安排:阅览Spring Boot工程时,咱们需求关注其结构和安排方法。这有助于咱们更好地了解各个模块的功用和效果,以及代码的安排方法。
  3. 学习怎么运用构建东西:构建东西(如Maven、Gradle)是办理Spring Boot工程的重要东西。咱们需求学习怎么运用这些构建东西来办理依靠项、构建运用程序等操作。
  4. 剖析代码完成:阅览Spring Boot工程的代码完成能够协助咱们更好地了解其作业原理和完成方法。咱们能够剖析代码中的注解、装备文件、操控器、服务等组件,以了解其功用和效果。
  5. 深入了解中心模块:为了更好地运用Spring Boot结构,咱们需求深入了解其间心模块,如主动装备、面向切面编程等。这有助于咱们愈加熟练地运用该结构,并完成愈加杂乱的功用。
  6. 结合实际项目经历:阅览Spring Boot工程的一起,咱们需求结合实际项目经历来了解和运用该结构。