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

7.8 KiB
Raw Blame History

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映射数据存储结构,DTOData 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 SecurityLombokSwagger等第三方库变得非常简单。

  • 安全框架 - 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): 使用其recordswitch表达式等新特性编写更简洁的代码。
    • 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 UIVue 3版本是一套高质量的企业级UI组件库提供了丰富的组件极大地加速了界面的开发进程。

  • HTTP客户端 - Axios封装: 对流行的Axios库进行二次封装:

    • 创建实例: 为API服务设置不同的baseURLtimeout等。
    • 请求拦截器: 统一添加认证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工作流。