Scaffold-Boot-3.0框架使用文档Scaffold-Boot-3.0框架使用文档
首页
快速开始
变更记录
Source
首页
快速开始
变更记录
Source
  • 开始
  • 基础

    • 目录结构
    • 代码生成器
    • 增删改查
    • 异常处理
    • Knife4j(Swagger)文档
    • 登录&登出
    • 系统安全
    • 数据字典
    • Excel处理
    • 文件上传下载
    • 工具类
    • 定时任务
    • 微信集成
    • 短信服务
    • 参数配置
    • 接口限流
    • 日志审计
    • 数据脱敏
    • 网站管理
  • AI开发

    • AI项目工程结构
    • MCP服务
    • AI开发模式介绍
  • 开发规范
  • 常见问题
  • 深入

    • 配置详解-Config类
    • 配置详解-Yml配置文件
  • 生命周期

    • SonarQube代码质量保证
    • 部署到测试环境
    • 部署到正式环境
  • 优秀案例

    • Excel导入完整案例
  • 信创专区

    • 海量数据库
    • 神通数据库
    • 达梦数据库
    • 麒麟v10安装插件
  • 框架升级

配置详解-Config类

章节简介

本章节介绍了config包下所有Config类的用途,如果项目中还有新的Config类,也应新建在此目录下

CaptchaConfig.java

本类用于配置验证码的参数,依赖于kaptcha库,可自行按需修改验证码的样式

DictCacheInitConfig.java

本类通过@PostConstruct注解,实现初始化系统字典缓存,以及其他字典缓存。详细可参考数据字典

GlobalCorsConfig.java

本类实现了SpringMvc的FilterRegistrationBean,用于全局跨域配置

LocalOssConfig.java

本类通过实现SpringMvc的WebMvcConfigurer接口以实现将本地磁盘文件映射至静态资源目录,实现接口访问。
文件路径及访问地址配置在相应环境的application.yml中,如下的配置代表
文件存储路径:D:/file/xxx.jpg
访问地址:http://localhost:9090/vpath/data/xxx.jpg

oss:
  config:
    #只有配置LocalServer才生效
    default-type: LocalServer
    support-ext: xls,xlsx,doc,docx,ppt,pptx,pdf,txt,jpg,jpeg,png,gif,bmp,zip,rar,7z,pdf,mp4,avi,mov
    local-oss:
      path: D:/file/
      url: /vpath/data

文件相关其他信息可参考文件上传

LogConfig.java

此类依托于@SysLog注解实现日志记录,详细可参考日志

MinioConfig.java

与LocalOssConfig相似,此类用于配置Minio对象存储的相关信息。

oss:
  config:
    #Minio生效
    default-type: Minio
    support-ext: xls,xlsx,doc,docx,ppt,pptx,pdf,txt,jpg,jpeg,png,gif,bmp,zip,rar,7z,pdf,mp4,avi,mov
    minio:
      endpoint: https://minio-s3.cnsaas.com
      accessKey: Key
      secret: 密钥
      bucket: 桶

文件相关其他信息可参考文件上传

MyBatisPlusConfig.java

本类为MyBatisPlus的核心配置类,请参考MyBatisPlus官方文档进行配置。参考地址:https://baomidou.com/

OptimisticLockerConfig.java

系统的 CRUD 逻辑依赖于 MyBatis-Plus提供的ServiceImpl,并通过@Version注解实现乐观锁机制。然而,在使用updateById方法时,若发生乐观锁冲突, MyBatis-Plus仅会返回false,而不会抛出异常。这意味着如果业务代码未显式判断updateById的返回值, 将可能导致数据在不一致状态下继续执行后续流程,对业务来说是极具风险的隐患。

如果每个业务点都手动判断updateById的执行结果,不仅容易遗漏,还会显著增加开发成本。 因此,系统通过封装统一的更新逻辑类,对updateById进行增强:在更新失败(如因乐观锁冲突)时,主动抛出异常,从而强制中断业务流程,确保数据一致性和业务安全性。

//切点配置
@Pointcut("execution(* com.baomidou.mybatisplus.core.mapper.BaseMapper.updateById(..)) || " +
            "execution(* com.baomidou.mybatisplus.core.mapper.BaseMapper.deleteById(..))")
public void updateAndDeleteMethods() {
    // Do nothing because of Aspect Entry Point!
}

SaTokenConfig.java

本类基于SaServletFilter的过滤器配置了Sa-Token的运行逻辑。
1、IGNORE_URL常量配置了无需鉴权即可访问的接口,例如登录接口、验证码生成等。

/**
 * Sa-Token 忽略认证的接口
 */
private static final List<String> IGNORE_URL = CollectionUtil.newArrayList(
        "/vpath/**",
        "/fykj/login",
        "/fykj/captcha"
        //...
);

2、getSaServletFilter方法配置了Sa-Token的过滤器,setAuth()中判断当前用户登录状态,若未登录则抛出异常。并且校验接口权限,详细可参考接口、角色。
如果用户拥有admin角色,则直接放行

@Bean
public SaServletFilter getSaServletFilter() {
    return new SaServletFilter()
            // 指定 拦截路由 与 放行路由
            .addInclude("/**")
            .setExcludeList(IGNORE_URL)
            // 认证函数: 每次请求执行
            .setAuth(obj -> {
                // 登录校验 -- 拦截所有路由,并排除/login等无需认证的路由
                if (!StpUtil.isLogin()) {
                    throw new BusinessException(ResultCode.TOKEN_ERROR_CODE, "已退出登录,请重新登录");
                }

                // admin直接放
                if (Oauth2Util.isAdmin()) {
                    return;
                }
                // 校验接口权限
                validApi();
            })
            .setError(e -> {
                // 异常处理函数:每次认证函数发生异常时执行此函数
            })
            .setBeforeAuth(obj -> {
                // 处理Option请求,直接放行
            });
    }

3、initRoleApiRelation()方法用于初始化接口与角色的关系,详细可参考接口、角色。
4、validApi()方法实现了用户接口权限校验逻辑,详细可参考接口、角色。

ThreadPoolConfig.java

本类配置了默认的线程池,可以根据项目需求自行配置。

XxlConfig.java

本类注入了XXL-JOB的核心调度器,具体可参考定时任务。

在 GitLab 上编辑此页
最后更新: 2025/6/12 14:45
贡献者: xuew
Next
配置详解-Yml配置文件