# springboot-template **Repository Path**: wangznan/springboot-template ## Basic Information - **Project Name**: springboot-template - **Description**: springboot单体脚手架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-07-01 - **Last Updated**: 2026-02-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, 单体脚手架 ## README # springboot单体脚手架 技术及工具包: 1、Lombok 2、SLF4J 3、Log4j2(替代默认的日志依赖Logback) 4、TransmittableThreadLocal(阿里的TTL)(替代TheadLocal和InheritableThreadLocal) 5、hutool工具包(引用里面的字符串和时间工具类)(替代Apache的common-lang3工具包) 1、日志框架 目前采用的方法是Log4j2+MDC+TransmittableThreadLocal(TTL) 第一版:采用的是过滤器,但是发现过滤器只可以处理http请求,对于异步,线程池则不支持;(TraceFilter+WebConfig) 第二版,采用的AOP,通过判断当前请求是否为http请求,以此实现不同的逻辑; MDC: 默认的MDC实现是基于ThreadLocal的,它只在当前线程有效,子线程或线程池不会自动继承,所以需要改写。 1、MdcTaskDecorator和MdcConfig。 利用Spring提供的接口,TaskDecorator,用于在将任务提交给线程池时,对任务进行预处理。它可以理解为一个“任务装饰器”,允许开发者在任务执行前后插入一些自定义逻辑,如线程上下文的传递、初始化等。 作用:可以解决线程池中MDC传递问题,但是需要手动设置,有点麻烦,而且只作用于Spring管理的线程池。根据TestController.java/test3测试,很麻烦,都需要手动设置, 2、引入log4j2-ttl-thread-context-map,替代Log4j2默认的ThreadContextMap,从而支持 MDC 的跨线程透传 ​ 第三版:又重新引入了filter,目前的方案是AOP+Filter+TTL+log4j2-ttl-thread-context-map(替代Log4j2默认的ThreadContextMap) ​ 主要:引入Filter,作为请求最开始,将traceId赋值进去,然后最后会清理,当然最重要的一部就是为了解决某些异常,比如HttpMessageNotReadableException,他是会在没有进入aop之前就报错的 ​ 引入AOP,是因为Filter处理不了非http请求的信息,所以需要这个来进行协助。 ​ 然后就是TTL和log4j2-ttl-thread-context-map,一个解决普通 ThreadLocal 在线程池环境中的失效问题,一个是为了在Log4j2 MDC添加traceId。 2、全局返回参数 采用的是GlobalResponseHandler全局处理器+WebMvcConfig剔除返回String类型时使用的StringHttpMessageConverter处理器+TraceIdCleanupListener更改清理traceId的时机 3、全局异常处理器 GlobalExceptionHandler传统的方式实现,@RestControllerAdvice。 注意:实体类布尔类型-命名不要isXXX