Spring Boot 3 + Vue 3 全栈项目骨架搭建实战
Spring Boot 3 + Vue 3 全栈项目骨架搭建实战:独立开发者的标准化脚手架一、为什么需要项目骨架很多独立开发者有一个通病:每开一个新项目,就从零开始搭一遍环境。建项目、配依赖、写配置文件、搭登录模块……每次重复劳动消耗大量精力。我的做法是维护一套标准化的项目骨架,新项目直接复制后改业务逻辑即可。目前这套骨架支撑了我三个线上项目:一纸云深(情绪治愈小程序)云深不知处(个人技术博客)无羡技术(个人作品站)本文完整分享这套骨架的设计思路和关键代码。二、技术选型层面技术版本后端框架Spring Boot3.2.5JDKOpenJDK17+ORMMyBatis-Plus3.5.7数据库MySQL8.0JWTjjwt0.12.5前端框架Vue 33.xUIElement Plus最新构建工具Maven3.9+三、后端骨架实现3.1 项目结构com.wuxian/ ├── WuxianApplication.java ├── common/ │ ├── base/BaseEntity.java │ ├── config/CorsConfig.java │ ├── config/SecurityConfig.java │ ├── config/MyBatisPlusConfig.java │ ├── exception/BusinessException.java │ ├── exception/GlobalExceptionHandler.java │ └── result/ApiResult.java ├── system/ │ ├── controller/AuthController.java │ ├── entity/SysUser.java │ ├── mapper/SysUserMapper.java │ ├── service/SysUserService.java │ └── util/JwtUtil.java └── {module}/ ├── controller/ ├── service/ ├── mapper/ ├── entity/ ├── dto/ └── vo/3.2 统一返回结果 ApiResult(核心)@Data@NoArgsConstructor@AllArgsConstructorpublicclassApiResultT{privateintcode;privateStringmessage;privateTdata;publicstaticTApiResultTsuccess(Tdata){returnnewApiResult(200,"success",data);}publicstaticTApiResultTerror(intcode,Stringmessage){returnnewApiResult(code,message,null);}}⚠️ 注意事项:不要使用Map.of("code", 200, "data", null)这种方式返回,Java 17+ 的Map.of()不允许 null 值,会直接抛出NullPointerException。必须使用HashMap或统一的响应类。3.3 全局异常处理@RestControllerAdvicepublicclassGlobalExceptionHandler{@ExceptionHandler(MethodArgumentNotValidException.class)publicApiResultVoidhandleValidation(MethodArgumentNotValidExceptione){Stringmsg=e.getBindingResult().getFieldErrors()