一个简单并完整的springboot项目

一个简单并完整的springboot项目

项目地址1:https://download.csdn.net/download/qq_38234785/89398614
项目地址2:https://mbd.pub/o/buranxin/work

一、接口

curl --location --request POST 'http://localhost:8080/api/test' \
--header 'Cookie: USER_INFO=123' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Accept: */*' \
--header 'Host: localhost:8080' \
--header 'Connection: keep-alive' \
--header 'Content-Type: multipart/form-data; boundary=--------------------------939904328035848353273608' \
--form 'file=@"C:\\Users\\slh\\Downloads\\123.py"'

二、项目概述

2.0 项目结构

│  pom.xml
│  README.md
├─src
│  ├─main
│  │  ├─java
│  │  │  └─org
│  │  │      └─example
│  │  │          │  AdminApplication.java
│  │  │          │
│  │  │          ├─bean
│  │  │          │  ├─dto
│  │  │          │  │      FileCheckResult.java
│  │  │          │  │
│  │  │          │  ├─model
│  │  │          │  │      UserInfo.java
│  │  │          │  │
│  │  │          │  └─req
│  │  │          │          Result.java
│  │  │          │
│  │  │          ├─checkTask
│  │  │          │      CheckTask.java
│  │  │          │      LouDongCheckTask.java
│  │  │          │      YuFaCheckTask.java
│  │  │          │
│  │  │          ├─config
│  │  │          │      AllConfig.java
│  │  │          │      WebMvcConfig.java
│  │  │          │
│  │  │          ├─constant
│  │  │          │      CommonConstant.java
│  │  │          │
│  │  │          ├─context
│  │  │          │      Context.java
│  │  │          │
│  │  │          ├─contoller
│  │  │          │      PythonController.java
│  │  │          │
│  │  │          ├─dao
│  │  │          │  ├─bean
│  │  │          │  │      FileCheck.java
│  │  │          │  │
│  │  │          │  └─mapper
│  │  │          │          FileCheckMapper.java
│  │  │          │
│  │  │          ├─enums
│  │  │          │      CheckStasusEnum.java
│  │  │          │      DeleteEnum.java
│  │  │          │      ErrorEnums.java
│  │  │          │      ResultCodeEnum.java
│  │  │          │
│  │  │          ├─exception
│  │  │          │      PythonException.java
│  │  │          │      PythonExceptionHandler.java
│  │  │          │
│  │  │          ├─interceptor
│  │  │          │      RequestInterceptor.java
│  │  │          │
│  │  │          ├─service
│  │  │          │  │  FileCheckService.java
│  │  │          │  │  PythonCheckService.java
│  │  │          │  │
│  │  │          │  └─Impl
│  │  │          │          FileCkeckServiceImpl.java
│  │  │          │          PythonCheckServiceImpl.java
│  │  │          │
│  │  │          └─utils
│  │  │                  AesUtil.java
│  │  │                  CookieUtils.java
│  │  │                  MyFileUtil.java
│  │  │
│  │  └─resources
│  │          application-dev.yml
│  │          application.yml
│  │          db.sql
根目录
  • pom.xml: Maven项目的配置文件,用于管理项目的依赖、插件和构建配置。
  • README.md: 项目的说明文件,通常包含项目的简介、安装指南、使用说明等。
src/main/java/org/example
  • AdminApplication.java: Spring Boot应用的启动类,包含main方法,用于启动Spring Boot应用。
src/main/java/org/example/bean
  • dto/FileCheckResult.java: 数据传输对象(DTO),用于封装文件检测结果。
  • model/UserInfo.java: 用户信息的模型类。
  • req/Result.java: 通用的响应结果类,可能包含状态码、消息和数据等信息。
src/main/java/org/example/checkTask
  • 包含不同的文件检测任务类,如CheckTask.java(基类)、LouDongCheckTask.javaYuFaCheckTask.java等,这些类负责执行具体的文件检测逻辑。
src/main/java/org/example/config
  • AllConfig.java: 可能包含项目的全局配置或自定义配置。
  • WebMvcConfig.java: Spring MVC的配置类,用于配置拦截器、视图解析器、静态资源处理等。
src/main/java/org/example/constant
  • CommonConstant.java: 包含项目中使用的常量定义。
src/main/java/org/example/context
  • Context.java: 可能是用于存储和管理上下文信息的类,如用户登录信息等。
src/main/java/org/example/controller
  • PythonController.java: 控制器类,负责处理与文件上传、检测等相关的HTTP请求。
src/main/java/org/example/dao
  • bean/FileCheck.java: 与文件检测相关的数据模型。
  • mapper/FileCheckMapper.java: MyBatis的Mapper接口,用于数据库操作。
src/main/java/org/example/enums
  • 包含多个枚举类,如CheckStasusEnum.java(检测状态枚举)、DeleteEnum.java(删除状态枚举)、ErrorEnums.java(错误类型枚举)和ResultCodeEnum.java(响应结果代码枚举)等。
src/main/java/org/example/exception
  • PythonException.java: 自定义异常类。
  • PythonExceptionHandler.java: 全局异常处理器,用于处理项目中抛出的自定义异常。
src/main/java/org/example/interceptor
  • RequestInterceptor.java: 请求拦截器,用于在请求处理之前或之后执行特定的逻辑,如从请求中获取cookie中的用户登录信息并存储在ThreadLocal中。
src/main/java/org/example/service
  • FileCheckService.javaPythonCheckService.java: 服务接口,定义文件检测相关的业务逻辑。
  • Impl/FileCkeckServiceImpl.javaImpl/PythonCheckServiceImpl.java: 服务接口的实现类。
src/main/java/org/example/utils
  • 包含多个工具类,如AesUtil.java(AES加密工具类)、CookieUtils.java(Cookie处理工具类)和MyFileUtil.java(文件操作工具类)等。
src/main/resources
  • application-dev.ymlapplication.yml: Spring Boot的配置文件,分别用于开发环境和默认环境的配置。
  • db.sql: 可能包含数据库的初始化脚本或数据迁移脚本。

角色和功能总结

  • controller: 负责接收和处理HTTP请求,调用服务层进行业务处理,并返回响应结果。
  • service: 实现具体的业务逻辑,如文件检测、异常处理等。
  • dao: 数据访问层,使用MyBatis等ORM框架与数据库进行交互。
  • utils: 提供通用的工具方法,如加密、文件操作等。
  • config: 配置Spring Boot应用和MVC的相关设置。
  • interceptor: 实现请求拦截器,用于在请求处理前后执行特定逻辑。
  • exception: 定义和处理项目中可能出现的自定义异常。

2.1 技术架构

springboot + mysql + mybatisplus

2.2 数据库设计

需要考虑数据表的通用结构,主键索引合组合索引的设计

CREATE TABLE `file_check` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增索引',
  `user_id` bigint unsigned DEFAULT '0' COMMENT '用户ID',
  `file_name` varchar(64) NOT NULL DEFAULT '' COMMENT '文件名',
  `result` text NOT NULL COMMENT '校验结果',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '0-正常;1-异常',
  `is_delete` bigint unsigned NOT NULL DEFAULT '0' COMMENT '逻辑删除',
  `create_time` bigint NOT NULL DEFAULT '0' COMMENT '创建时间',
  `update_time` bigint NOT NULL DEFAULT '0' COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_id_file_name` (`user_id`,`file_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='文件校验表';

2.3 架构

  1. 从请求中获取cookie中的用户登录信息,在拦截器中存储在Threadlocal中;
  2. 设计接口,对接口上传文件检验(大小、文件名称);
  3. 建立不同task对文件进行检测,将检测结果整理为Object类型;
  4. 如果返回结构中是异常的情况则删除文件并且存储数据库,否则返回正常;
  5. dao层是处理与数据库存储的接口;

2.4 注意

  1. 设置全局配置;
  2. 全局异常枚举、全局异常处理;
  3. 拦截器处理用户信息;
  4. 抽象出静态单元utills;
  5. 设置不同环境的启动yml;
  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不染心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值