JavaFX Boot Scaffold 是一个企业级 JavaFX 桌面应用脚手架项目,基于 Spring Boot 框架构建,集成了用户权限管理、Selenium 自动化测试、操作日志记录、全局异常处理等常用功能模块。项目采用标准的 MVC 架构,代码结构清晰,注释完善,适合作为桌面应用开发的基础框架。
- 🎨 现代化 UI 设计:基于 Bootstrap 风格的 CSS 样式,界面美观大方
- 🔐 完整的权限系统:用户、角色、权限三级权限管理,支持细粒度权限控制
- 🤖 Selenium 自动化集成:内置 Selenium WebDriver,支持浏览器自动化操作
- 📝 操作日志记录:基于 AOP 的操作日志记录,支持异步保存
- ⚡ 全局异常处理:统一的异常处理机制,优雅的错误提示
- 🛠️ 丰富的工具类库:日期、字符串、文件、JSON、HTTP、Excel 等常用工具类
- 📦 开箱即用:完善的配置文件和数据库初始化脚本,快速启动项目
| 技术 | 版本 | 说明 |
|---|---|---|
| Java | 1.8+ | JDK 8 内置 JavaFX |
| Spring Boot | 2.1.4 | 核心框架 |
| MyBatis Plus | 3.x | ORM 框架 |
| MySQL | 5.7+ | 数据库 |
| Selenium | 4.x | 浏览器自动化 |
| Lombok | - | 简化代码 |
| Druid | - | 数据库连接池 |
- ✅ 用户登录/登出
- ✅ 角色管理
- ✅ 权限管理
- ✅ 用户-角色关联
- ✅ 角色-权限关联
- ✅ 密码加密(BCrypt)
- ✅ Session 管理
- ✅ Chrome/Firefox/Edge 浏览器支持
- ✅ 无头模式运行
- ✅ 元素定位与操作
- ✅ 页面等待机制
- ✅ 截图功能
- ✅ Cookie 管理
- ✅ JavaScript 执行
- ✅ 文件下载
- ✅ 基于 AOP 的日志拦截
- ✅ 异步日志保存
- ✅ 操作类型分类
- ✅ 请求参数记录
- ✅ 返回结果记录
- ✅ 全局异常捕获
- ✅ 业务异常处理
- ✅ 系统异常处理
- ✅ 统一响应格式
- ✅ DateUtil:日期时间处理
- ✅ StringUtil:字符串操作
- ✅ FileUtil:文件操作
- ✅ JsonUtil:JSON 处理
- ✅ HttpUtil:HTTP 请求
- ✅ ExcelUtil:Excel 读写
- ✅ ValidationUtil:数据验证
- ✅ CollectionUtil:集合操作
- ✅ RandomUtil:随机数生成
- ✅ ImageUtil:图片处理
- JDK 1.8 或更高版本
- Maven 3.6+
- MySQL 5.7+ 或 MySQL 8.0+
- Chrome/Firefox/Edge 浏览器(用于 Selenium)
git clone https://gitee.com/zhbdream/javafx-boot-scaffold.git
cd javafx-boot-scaffold执行数据库初始化脚本:
mysql -u root -p < src/main/resources/db/schema.sql或者手动执行 SQL 文件中的语句。
编辑 src/main/resources/application.yml,修改数据库连接信息:
spring:
datasource:
url: jdbc:mysql://localhost:3306/javafx_boot?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: your_passwordapp:
# 是否启用登录验证(true-需要登录,false-跳过登录直接进入主界面)
enable-auth: true
# JWT Token 密钥(建议修改为随机字符串)
jwt-secret: your-secret-key
# Token 过期时间(小时)
jwt-expiration: 24# 编译项目
mvn clean compile
# 运行项目
mvn javafx:run或者使用 IDE(如 IntelliJ IDEA、Eclipse)直接运行 io.javafxboot.Application 类的 main 方法。
数据库初始化后,默认管理员账号:
- 用户名:
admin - 密码:
admin123
⚠️ 安全提示:生产环境请务必修改默认密码!
javafx-boot-scaffold/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── io/javafxboot/
│ │ │ ├── annotation/ # 自定义注解
│ │ │ ├── aspect/ # AOP 切面
│ │ │ ├── config/ # 配置类
│ │ │ ├── ctrl/ # 控制器
│ │ │ ├── entity/ # 实体类
│ │ │ ├── exception/ # 异常类
│ │ │ ├── mapper/ # MyBatis Mapper
│ │ │ ├── service/ # 服务层
│ │ │ ├── util/ # 工具类
│ │ │ │ └── selenium/ # Selenium 工具类
│ │ │ └── view/ # 视图类
│ │ └── resources/
│ │ ├── application.yml # 应用配置
│ │ ├── db/ # 数据库脚本
│ │ ├── fxml/ # FXML 界面文件
│ │ ├── css/ # 样式文件
│ │ └── icon/ # 图标资源
│ └── test/ # 测试代码
├── pom.xml # Maven 配置
└── README.md # 项目说明
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/javafx_boot
username: root
password: rootselenium:
browser-type: chrome # 浏览器类型: chrome, firefox, edge
headless: false # 是否无头模式
implicit-wait: 10 # 隐式等待时间(秒)
page-load-timeout: 30 # 页面加载超时时间(秒)
driver-path: # 驱动路径(留空则自动下载)
window-size: 1920,1080 # 窗口大小app:
enable-auth: true # 是否启用登录验证
jwt-secret: your-secret-key # JWT 密钥
jwt-expiration: 24 # Token 过期时间(小时)@Autowired
private SeleniumService seleniumService;
// 打开网页
seleniumService.navigateTo("https://www.example.com");
// 查找元素并点击
seleniumService.click(By.id("submit-btn"));
// 输入文本
seleniumService.sendKeys(By.name("username"), "testuser");
// 截图
seleniumService.takeScreenshot("screenshot.png");// 日期格式化
String dateStr = DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss");
// JSON 处理
String json = JsonUtil.toJson(user);
User user = JsonUtil.parseObject(json, User.class);
// Excel 读取
List<Map<String, Object>> data = ExcelUtil.readExcel("data.xlsx");
// HTTP 请求
String response = HttpUtil.get("https://api.example.com/data");在方法上添加 @Log 注解即可自动记录操作日志:
@Log(module = "用户管理", operateType = "INSERT")
public void createUser(User user) {
// 业务逻辑
}// 抛出业务异常
throw new BusinessException("用户名或密码错误");
// 抛出系统异常
throw new SystemException("数据库连接失败");- 在
entity包下创建实体类 - 在
mapper包下创建 Mapper 接口 - 在
service包下创建服务接口和实现 - 在
ctrl包下创建控制器 - 在
view包下创建视图类 - 在
resources/fxml下创建 FXML 文件
编辑 src/main/resources/css/bootstrap-style.css 文件,修改 Bootstrap 风格的样式。
# 打包为 JAR
mvn clean package
# 打包为可执行文件(Windows)
mvn javafx:jfxnative欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 遵循 Java 编码规范
- 使用 4 个空格缩进
- 类和方法必须添加 JavaDoc 注释
- 提交前运行
mvn clean compile确保编译通过
本项目采用 MIT 许可证。
- 项目维护者 - MrZhao
- Spring Boot - 核心框架
- JavaFX - UI 框架
- MyBatis Plus - ORM 框架
- Selenium - 浏览器自动化
- javafx-support - JavaFX 与 Spring Boot 集成
- Issues: Gitee Issues
- 邮箱: mrzhaopro@qq.com
如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!
Made with ❤️ by JavaFX Boot Scaffold Team