Skip to content

核心模块 (core)

最后更新: 15 小时前
实践版本: v2.13.4

简介

continew-starter-core 是 ContiNew Starter 库的核心模块,为其他模块提供基础支持和通用能力。

pom.xml
xml
<!-- ContiNew Starter 核心模块,提供基础配置与通用工具类 -->
<dependency>
    <groupId>top.continew.starter</groupId>
    <artifactId>continew-starter-core</artifactId>
</dependency>

主要特性

  • 提供应用配置: 封装通用应用基础信息配置,自动引入 Hutool SpringUtil 工具类
  • 优化线程池配置: 支持线程池(ThreadPoolTaskExecutor、ScheduledExecutorService、@Async)自动配置(基于CPU核数动态计算),同时支持自定义参数
  • 提供基础组件: 包含常用常量(StringConstants、CharConstants)、扩展Hutool工具类、基础枚举(BaseEnum)及异常体系(BaseException)
  • 请求响应增强: 提供可重复读取请求/响应内容的包装器(RepeatReadRequestWrapper、RepeatReadResponseWrapper)

应用配置

大多数情况下,在应用开发中需要频繁使用到应用的基础信息,例如:应用名称、应用版本、应用基础包地址等等。如果在每个需要应用信息的地方都通过硬编码的方式来使用,显然不利于后续维护。 所以我们提供了应用信息自动配置,且帮助导入了 Hutool SpringUtil 这一高频使用工具类。

配置示例

配置详情请查看:top.continew.starter.core.autoconfigure.application.ApplicationProperties

application.yml
yaml
--- ### 应用配置
application:
  id: continew-admin
  # 名称
  name: ContiNew Admin
  # 描述
  description: 持续迭代优化的前后端分离中后台管理系统框架,开箱即用,持续提供舒适的开发体验。
  # 版本
  version: 4.0.0
  starter: 2.13.4
  # 基本包
  base-package: top.continew.admin
  ## 作者信息配置
  contact:
    name: Charles7c
    email: charles7c@126.com
    url: https://charles7c.top
  ## 许可协议信息配置
  license:
    name: Apache-2.0
    url: https://github.com/continew-org/continew-admin/blob/dev/LICENSE

使用示例

java
import top.continew.starter.core.autoconfigure.application.ApplicationProperties;

@RestController
@RequiredArgsConstructor
public class TestController {
    
    private final ApplicationProperties applicationProperties;
    
}

线程池配置

配置详情请查看:top.continew.starter.core.autoconfigure.threadpool.ThreadPoolExtensionProperties。 线程池配置已经针对 @Async 进行了配置。

配置示例

yaml
--- ## 线程池配置(默认启用扩展配置,如未指定 corePoolSize、maxPoolSize 则根据机器配置自动设置)
spring.task:
  # 异步任务
  execution:
    # 启用优化配置(关闭后,ThreadPoolTaskExecutor、AsyncConfigurer 配置优化将被关闭)
    extension.enabled: true
    thread-name-prefix: task-pool
    # 任务拒绝策略(默认 ABORT,不执行新任务,直接抛出 RejectedExecutionException 异常)
    # CALLER_RUNS:提交的任务在执行被拒绝时,会由提交任务的线程去执行
    rejected-policy: CALLER_RUNS
    pool:
      keep-alive: 300s
    shutdown:
      # 是否等待任务执行完成再关闭线程池(默认 false)
      await-termination: true
      # 等待时间
      await-termination-period: 30s
  # 定时任务
  scheduling:
    # 启用优化配置(关闭后,ThreadPoolTaskScheduler 配置优化将被关闭)
    extension.enabled: true
    thread-name-prefix: schedule-pool
    # 任务拒绝策略(默认 ABORT,不执行新任务,直接抛出 RejectedExecutionException 异常)
    # CALLER_RUNS:提交的任务在执行被拒绝时,会由提交任务的线程去执行
    rejected-policy: CALLER_RUNS
    shutdown:
      # 是否等待任务执行完成再关闭线程池(默认 false)
      await-termination: true
      # 等待时间
      await-termination-period: 30s

使用示例

java
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

@RestController
@RequiredArgsConstructor
public class TestController {

    private final ThreadPoolTaskExecutor threadPoolTaskExecutor;

}

核心依赖

依赖描述
org.springframework.boot:spring-boot-starterSpring Boot Starter(自动配置相关依赖)
org.springframework.boot:spring-boot-configuration-processorSpring Boot Starter(自动配置相关依赖)
org.springframework.boot:spring-boot-starter-aopSpring AOP Starter
org.springframework:spring-webSpring Web
org.springframework:spring-webmvcSpring MVC
jakarta.servlet:jakarta.servlet-apiJakarta Servlet(原 Javax Servlet)
org.hibernate.validator:hibernate-validator(optional)Hibernate Validator
net.dreamlu:mica-ip2region第三方封装 Ip2region(离线 IP 数据管理框架和定位库,支持亿级别的数据段,10 微秒级别的查询性能,提供了许多主流编程语言的 xdb 数据管理引擎的实现)。
cn.hutool:hutool-coreHutool 核心模块(核心方法及数据结构包)
cn.hutool:hutool-jsonHutool JSON 模块(基于 json.org 官方库改造)
cn.hutool:hutool-extraHutool 扩展模块(提供对第三方库的工具类支持)
cn.hutool:hutool-httpHutool HTTP客户端模块(针对 JDK 的 HttpUrlConnection 做一层封装,简化了 HTTPS 请求、文件上传、Cookie 记忆等操作,使 Http 请求变得无比简单)