# lucy-spring-boot-starter
**Repository Path**: lboot/lucy-spring-boot-starter
## Basic Information
- **Project Name**: lucy-spring-boot-starter
- **Description**: SpringBoot开发脚手架,鉴权、缓存、注解、全局配置、通用数据对象、通用接口、工具类等,详细介绍可参阅README。
- **Primary Language**: Java
- **License**: LGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 3
- **Created**: 2022-12-12
- **Last Updated**: 2026-05-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: SpringBoot, Java, 脚手架
## README
Lucy v2
不断迭代的技术解决方案
---
## 1. 概述与快速开始
### 1.1 项目介绍
**Lucy** 是一系列技术方案的整合框架,也可以视作一个完整项目多个不同模块的拆分,支持按需引入,秉承着高可用的观念,通过对`POM`文件修改完成解决方案的更迭,并提供配套前端方案。同时也支持自定义拓展实现方案,更好适配业务系统。
该框架核心为`lucy-spring-boot-starter`,是多种解决方案的必需依赖。
### 1.2 环境要求
- **JDK**: 21+
- **Spring Boot**: 3.x
- **构建工具**: Maven 3.6+
### 1.3 快速开始
#### 1.3.1 仓库配置
在引入任何 `Lucy`系列依赖之前,需要完成`jitpack`镜像仓库的配置。
```xml
jitpack.io
https://www.jitpack.io
```
#### 1.3.2 依赖引入
在`pom`文件中直接引入,`version`与发行版本号一致,版本列表点击[查看](https://gitee.com/lboot/lucy-spring-boot-starter/releases)
```xml
com.gitee.lboot
lucy-spring-boot-starter
x.x.x
```
#### 1.3.3 基础配置
```properties
# 应用名称
spring.application.name=lucy-spring-boot-starter
# 服务端口(支持环境变量)
server.port=${SERVER_PORT:8080}
# JPA 允许 bean 定义覆盖
spring.main.allow-bean-definition-overriding=true
```
---
## 2. JPA 数据持久化
### 2.1 数据源与 JPA 配置
#### 2.1.1 数据源配置
```properties
# 数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/lucy?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
# HikariCP 连接池配置
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.connection-timeout=30000
```
#### 2.1.2 JPA 配置
```properties
# 自动更新表结构
spring.jpa.hibernate.ddl-auto=update
# 显示 SQL
spring.jpa.show-sql=false
# 物理命名策略:驼峰转下划线
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# 禁用 open-in-view
spring.jpa.open-in-view=false
```
### 2.2 实体基类体系
提供 14 个实体相关基类/接口,支持两种主键策略(雪花 String ID / 自增 Long ID)、四种审计模式,并扩展逻辑删除(`Logic*`)与乐观锁能力:
| 类名 | 主键类型 | 审计字段 | 说明 |
|------|----------|----------|------|
| `BaseEntity` | String (雪花) | 创建者、修改者、创建时间、修改时间 | 完整审计,使用 Spring Data JPA 自动审计 |
| `LongBaseEntity` | Long (自增) | 创建者、修改者、创建时间、修改时间 | 完整审计,使用 Spring Data JPA 自动审计 |
| `DateAuditBaseEntity` | String (雪花) | 创建时间、修改时间 | 仅日期审计 |
| `DateAuditLongBaseEntity` | Long (自增) | 创建时间、修改时间 | 仅日期审计 |
| `CustomAuditBaseEntity` | String (雪花) | 创建者、修改者、创建时间、修改时间 | 自定义审计(手动赋值,不自动填充) |
| `CustomAuditLongBaseEntity` | Long (自增) | 创建者、修改者、创建时间、修改时间 | 自定义审计(手动赋值) |
| `NoAuditBaseEntity` | String (雪花) | 无 | 仅包含 ID |
| `NoAuditLongBaseEntity` | Long (自增) | 无 | 仅包含 ID |
| `LogicBaseEntity` | String (雪花) | `BaseEntity` 全字段 + deleted、deletedTime、deleteUserId、version | 带逻辑删除 + 乐观锁 |
| `LogicLongBaseEntity` | Long (自增) | `LongBaseEntity` 全字段 + deleted、deletedTime、deleteUserId、version | 带逻辑删除 + 乐观锁 |
| `LogicDateAuditBaseEntity` | String (雪花) | `DateAuditBaseEntity` 全字段 + deleted、deletedTime、version | 日期审计 + 逻辑删除 + 乐观锁 |
| `LogicDateAuditLongBaseEntity` | Long (自增) | `DateAuditLongBaseEntity` 全字段 + deleted、deletedTime、version | 日期审计 + 逻辑删除 + 乐观锁 |
| `LogicCustomAuditBaseEntity` | String (雪花) | `CustomAuditBaseEntity` 全字段 + deleted、deletedTime、deleteUserId、version | 自定义审计 + 逻辑删除 + 乐观锁 |
| `LogicCustomAuditLongBaseEntity` | Long (自增) | `CustomAuditLongBaseEntity` 全字段 + deleted、deletedTime、version | 自定义审计 + 逻辑删除 + 乐观锁 |
**使用示例:**
```java
@Entity
@Table(name = "sys_user")
public class User extends BaseEntity {
private String username;
private String email;
// ...
}
```
### 2.3 CRUD 数据访问服务
提供丰富的 CRUD 操作接口:
| 服务接口 | 功能说明 |
|---------|----------|
| `BaseService` | 基础 CRUD 接口(分页、查询、保存、删除) |
| `BatchService` | 批量操作接口(批量保存、查询、删除) |
| `SpecService` | 谓词条件查询接口(Specification 动态查询) |
| `UnwrapService` | 数据脱壳服务(查询不到时抛异常) |
| `UniService` | 聚合服务接口,继承以上所有服务 |
**使用示例:**
```java
@Service
public class UserService extends AbstractJpaCurdExt implements UniService {
// 自动获得所有 CRUD 方法
}
```
### 2.4 逻辑删除
实现 `LogicEntity` 接口的实体自动获得逻辑删除能力,查询时自动过滤已删除记录。
```java
@Bean
public class User extends LogicBaseEntity {
private String username;
}
@Service
public class UserService extends AbstractJpaLogicCurdExt {
// logicDeleteOne / recoverOne 等方法自动可用
}
```
提供四个抽象实现类:
| 抽象类 | 说明 |
|--------|------|
| `AbstractJpaCurd` | 基础 CRUD 实现 |
| `AbstractJpaCurdExt` | 扩展 CRUD(支持 Example + Specification) |
| `AbstractJpaLogicCurd` | 逻辑删除 CRUD(自动过滤 deleted=false) |
| `AbstractJpaLogicCurdExt` | 扩展逻辑删除 CRUD(支持自定义 Specification) |
### 2.5 JPA 类型转换器
提供数据库字段与 Java 类型的自动转换:
| 转换器 | 功能 |
|--------|------|
| `EncryptConverter` | 字段 DES 加密存储(已废弃) |
| `JpaListStringConverter` | List\ 与 JSON 互转 |
| `JpaListLongConverter` | List\ 与 JSON 互转 |
| `JpaListObjectConverter` | List\