Files
Environment-Monitoring-System/Report/相关技术基础.md
ChuXun 02a830145e 1
2025-10-25 19:18:43 +08:00

101 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1. 相关技术基础
本项目综合运用了业界主流的开发技术与环境构建了一个现代化Web应用。以下是项目所涉及的关键技术、开发工具和环境的介绍。
### 1.1 理论基础
项目的架构和代码设计遵循了下述成熟的软件工程理论,以确保系统的可维护性和扩展性。
* **面向对象编程 (OOP):**
项目的核心编程思想,其封装、继承、多态特性在后端代码设计中得到了深入应用。
* **封装 (Encapsulation):** 核心业务实体(如`User`, `Task`被抽象为Java类其属性私有化仅通过公共方法暴露保证了对象状态的完整性。
* **继承 (Inheritance) 与多态 (Polymorphism):** 在自定义的JSON仓储层设计中通过定义泛型接口`JsonRepository<T, ID>`和实现该接口的泛型基类`JsonRepositoryImpl<T, ID>`,使得具体的实体仓储(如`JsonUserRepositoryImpl`)能自动获得通用的数据操作能力。业务逻辑层依赖于抽象接口而非具体实现,实现了"面向接口编程",提高了代码的灵活性。
* **SOLID设计原则尤其是依赖倒置原则 (DIP):**
项目架构遵循SOLID原则特别是依赖倒置原则即"高层模块不应依赖于低层模块,两者都应依赖于抽象"。
* **实践应用:** `Service`层(高层模块)依赖的是`UserRepository`等抽象接口,而不是`JsonRepositoryImpl`这样的具体实现(低层模块)。这种设计倒置了传统的依赖关系,极大提升了系统的可替换性和可测试性。未来更换数据源或进行单元测试时,只需更换实现或模拟接口,上层代码无需改动。
* **模型-视图-控制器 (MVC) 分层架构:**
项目遵循MVC分层思想并扩展为更精细的四层架构Controller -> Service -> Repository -> Entity。
* **Controller (控制器层):** 作为HTTP请求的入口负责解析请求参数调用`Service`层执行业务逻辑,并返回响应。
* **Service (业务逻辑层):** 包含所有业务规则和处理流程通过依赖注入DI调用`Repository`层。
* **Repository (数据访问层):** 数据持久化的抽象负责与数据源本项目中为JSON文件交互实现业务与数据的解耦。
* **Entity/DTO (模型层):** POJO对象`Entity`映射数据存储结构,`DTO`Data Transfer Object用于各层之间的数据传输避免持久化实体直接暴露给外部。
* **RESTful API 设计原则:**
前后端通信完全基于RESTful风格的API进行。
* **统一接口 (Uniform Interface):** 使用HTTP标准方法`GET`, `POST`, `PUT`, `DELETE`)表达对资源的操作。
* **无状态 (Stateless):** 服务端不保存客户端会话状态每次请求都包含所有必要信息如JWT提高了系统的可伸缩性。
* **资源导向 (Resource-Oriented):** API围绕"资源"展开,使用名词(如`/api/users`)标识资源,而非动词。
### 1.2 后端技术栈
* **核心框架 - `Spring Boot 3.x`:**
作为后端应用基石它通过自动配置、起步依赖和内嵌服务器等特性极大地简化了Spring应用的开发、配置和部署。其强大的生态整合能力使得集成`Spring Security``Lombok``Swagger`等第三方库变得非常简单。
* **安全框架 - `Spring Security 6.x` & `JWT`:**
采用`Spring Security`结合`JSON Web Tokens (JWT)`,构建无状态的认证与授权体系。
* **`Spring Security` Filter链:** 自定义`JwtAuthenticationFilter`过滤器用于在每个请求中校验JWT并设置安全上下文。
* **声明式权限控制:** 使用`@PreAuthorize`注解对Service方法进行方法级别的权限声明实现了安全逻辑与业务逻辑的解耦。
* **无状态会话 (Stateless Session):** 配置会话管理策略为`STATELESS`,使后端服务成为真正的无状态服务,提升了系统的可伸缩性。
* **持久化方案 - 自定义泛型JSON仓储层:**
为满足"数据存储在JSON文件中"的需求,设计并实现了一套模拟`Spring Data JPA`接口规范的、可复用的泛型JSON仓储层。
* **`JsonStorageService`:** 将所有文件I/O操作封装在此服务中并使用`synchronized`块确保并发写操作的线程安全。
* **`JsonRepositoryImpl<T, ID>`:** 泛型基类实现了通用的CRUD功能具体的实体仓储通过继承该类来复用代码。
* 该方案遵循**依赖倒置原则**,业务层仅依赖抽象接口,为未来平滑迁移持久化方案提供了便利。
* **数据校验 - `Jakarta Bean Validation` (`Hibernate Validator`):**
在DTO的字段上使用`@NotNull`, `@Size`等声明式注解并配合Controller层的`@Valid`注解,实现对请求参数的自动化校验。
* **对象映射 - `MapStruct`:**
一个编译期的代码生成器,通过定义`@Mapper`接口自动生成Entity与DTO之间转换的高性能实现代码提升了开发效率。
* **编程语言与辅助工具:**
* **`Java 17 (LTS)`:** 使用其`record``switch`表达式等新特性编写更简洁的代码。
* **`Lombok`:** 通过`@Data`, `@Builder`等注解,消除样板代码。
* **`SLF4J` & `Logback`:** 灵活的日志系统,通过配置文件实现分环境、分级别的日志输出。
### 1.3 前端技术栈
采用`Vue.js`生态的最新技术构建响应迅速、代码可维护的现代化单页应用SPA
* **核心框架 - `Vue.js 3.x`:**
利用其两大核心新特性:
* **`Composition API` (组合式API):** 将相关逻辑组织在同一个`setup`函数内,提高了代码的可读性、可维护性和逻辑复用性。
* **`Proxy`-based Reactivity:** 基于`Proxy`重写的响应式系统,解决了`Vue 2`中无法监听对象属性新增/删除等痛点。
* **构建工具 - `Vite`:**
新一代前端构建工具,优势在于:
* 利用浏览器原生ESM支持实现开发环境下的极速冷启动和闪电般的热模块替换HMR
* 生产环境使用`Rollup`打包,生成高度优化的静态资源。
* **状态管理 - `Pinia`:**
`Vue`官方推荐的下一代状态管理库特点是API直观、类型支持完美且天生模块化。废除了`Vuex`中复杂的`Mutations`等概念,心智负担小。
* **UI组件库 - `Element Plus`:**
`Element UI``Vue 3`版本是一套高质量的企业级UI组件库提供了丰富的组件极大地加速了界面的开发进程。
* **HTTP客户端 - `Axios`封装:**
对流行的`Axios`库进行二次封装:
* **创建实例:** 为API服务设置不同的`baseURL``timeout`等。
* **请求拦截器:** 统一添加认证`token`
* **响应拦截器:** 统一处理业务数据和错误状态码。
### 1.4 测试技术
* **后端单元与集成测试 (`JUnit 5`, `Mockito`, `Spring Boot Test`):**
使用`spring-boot-starter-test`集成的测试套件保障业务逻辑正确性。
* **`JUnit 5`:** 测试的基础框架。
* **`Mockito`:** 在单元测试中用于模拟依赖对象如Repository实现测试隔离。
* **`Spring Boot Test`:** 用于集成测试,加载完整应用上下文,测试跨层级的真实交互场景。
* **API接口测试 (`Postman` / `Swagger UI`):**
* **`Swagger UI`:** 通过集成`SpringDoc`根据代码注解自动生成交互式API文档方便调试。
* **`Postman`:** 用于执行更复杂的API测试场景、编写测试用例和自动化测试。
### 1.5 开发工具与环境
* **IDE:** 后端使用`IntelliJ IDEA Ultimate`,前端使用`Visual Studio Code`
* **项目管理与构建:** 后端使用`Maven`,前端使用`npm`
* **版本控制:** `Git` & `GitHub`,遵循`Git Flow`工作流。