Spring Quick - 企业级Spring Boot快速启动框架深度解析

Spring Quick,顾名思义,是作者本人创建的一个基于Spring Boot + MyBatis-Plus + Sa-Token + Knife4j等框架结构搭建的一个企业级脚手架,方便企业及开发人员直接上手使用。并在项目中集成常用工具类,如MyBatis-Plus-Generator,Redisson等。还整合了整个项目代码四层架构规范(代码生成同时配置此规范)、统一响应体设计、业务异常、切面异常规范、切面日志等。


Spring Quick - 企业级Spring Boot快速启动框架深度解析

项目定位

「Spring Quick」是一款面向生产环境的Spring Boot企业级脚手架,基于Spring Boot 3.2深度定制,整合了主流技术栈的最佳实践。开发者可在5分钟内完成从项目初始化到接口发布的全流程。

GitHub地址:https://github.com/practiceL/spring-quick

核心特性

1. 智能代码生成器

// 代码生成示例(基于velocity模板)
public static void main(String[] args) {
        try {
            MybatisPlusCodeGenerator generator = new MybatisPlusCodeGenerator();
            generator.DB_URL = "jdbc:mysql://127.0.0.1:3306/sa-token-db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT";
            generator.DB_USER_NAME = "root";
            generator.DB_PASSWORD = "root";
            generator.TABLE_PREFIX = new String[]{"sys_"};
            generator.PACKAGE_PARENT = "com.saveslave.hhp";
            generator.SUPER_ENTITY_CLASS = "";
            generator.SUPER_ENTITY_COLUMNS = new String[]{};
            generator.USE_TEMP_OUTPUT = true;
            generator.INCLUDES = new String[]{
                    "sys_user"
            };
            generateDefaultCode(generator);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  • 支持生成Controller/Service/Mapper/Entity四层代码
  • 自定义模板机制(resources/templates
  • 自动生成Swagger3注解

2. 安全认证体系

# 安全配置样例
sa-token:
  # token 名称(同时也是 cookie 名称)
  token-name: satoken
  # token 有效期(单位:秒) 默认30天,-1 代表永久有效
  timeout: 2592000
  # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
  active-timeout: -1
  # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
  is-concurrent: true
  # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
  is-share: true
  # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
  token-style: uuid
  # 是否输出操作日志
  is-log: true
  • 集成Sa-Token实现以下功能:
    • RBAC权限模型(角色-菜单绑定)
    • 分布式会话管理
    • 二级认证(敏感操作二次验证)

3. 企业级数据层封装

// 分布式锁使用示例
@Autowired
private RedisLockHelper lockHelper;

public void businessProcess() {
    String lockKey = "order:123";
    if(lockHelper.tryLock(lockKey, 10, TimeUnit.SECONDS)) {
        try {
            // 业务逻辑
        } finally {
            lockHelper.unlock(lockKey);
        }
    }
}
  • 增强功能清单:
    • 多数据源动态切换(基于AOP)
    • MyBatis-Plus 自动填充优化
    • 分布式锁(Redis + Lua原子操作)

4. 标准化工程规范

// 统一响应体设计
public class Result<T> implements Serializable {

    private T data;
    private Integer code;
    private String msg;
    public static <T> Result<T> succeed(String msg) {
        return succeedWith(null, ReturnCode.SUCCESS.getCode(), msg);
    }

    public static <T> Result<T> succeed(T model, String msg) {
        return succeedWith(model, ReturnCode.SUCCESS.getCode(), msg);
    }
..................

}
  • 统一组件:
    • 全局异常处理器(BizException)
    • 参数验证器(Hibernate Validator增强)
    • 操作日志切面(异步存储)

技术架构

通过
拒绝
用户请求
Sa-Token鉴权
权限验证
业务控制器
返回401
Service层
MyBatis-Plus Mapper
MySQL/MariaDB
返回数据
统一响应包装
客户端

快速开始

步骤1:环境准备

git clone https://github.com/practiceL/spring-quick.git
mvn clean install

步骤2:数据库配置

CREATE DATABASE `quick_db` DEFAULT CHARACTER SET utf8mb4;
-- 执行 docs/sql/init.sql 初始化表结构

步骤3:生成业务模块

// 在test目录运行生成器
public class UserGen {
    public static void main(String[] args) {
        new CodeGenerator()
          .setModuleName("user")
          .setTablePrefix("sys_")
          .execute();
    }
}

最佳实践

场景1:接口开发

@Api(tags = "用户管理")
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService usersService;
    /**
     * 新增用户
     */
    @PostMapping("/savaUser")
    public Result<String> savaUser(@RequestBody User user) {
        // 新增用户需要/insert权限
        StpUtil.checkPermission("/insert");
        return usersService.savaUser(user);
    }
    /**
     * 查询全部用户,下面这个方法也是mybatis-plus自带的查询方法,很方便
     */
    @GetMapping("/selectAllUser")
    public List<User> queryAllUser() {
        // 查询全部用户需要/select权限
        StpUtil.checkPermission("/select");
        return usersService.list();
    }
}
  • 任务日志可视化查询

效能对比

功能 传统开发耗时 使用Spring Quick
基础架构搭建 2-3天 5分钟
用户管理模块开发 8小时 15分钟
权限系统集成 1天 即时生效

用户评价

“这个模板将我们的新项目启动时间缩短了70%,特别是代码生成器和统一异常处理的设计非常符合企业开发规范” —— 某金融科技公司技术总监

未来规划

  • 增加Flowable工作流支持
  • 集成MinIO对象存储
  • 开发CLI工具链

立即体验:GitHub仓库地址

星星Star:麻烦动动手指点个赞


你可能感兴趣的:(spring,boot,spring,spring,boot,java)