博客不常在,有问题可以github交流一下
源码github地址 https://github.com/851543/ServiceHomeJavaFx.git
一、 开始介绍
1. 开始介绍
大家好,时隔半年我又再次更新博客,虽然可以说很久或者不久,废话不多说,直接步入主题。
我目前在校,前几天有个生产课出了个程序设计系统,我寻思简简单单,可是它限制了使用的技术范围,也就是实现前后端不分离桌面应用,我寻思着也没有做过呀,所以我在网上参考一些建议和技术文案,最终决定使用JavaFx+springboot+mybatis+bootstrap等等实现,大部分技术我熟悉,就是JavaFx不熟悉,JavaFx是 Oracle 公司提供的技术栈,同时JavaSwing的升级版,我们知道学习新的技术是好的,但是学了用不了几次等于没学,学习新技术需要时间和耐心,可是我现在既没有时间更没有耐心,所以我将快速完成程序设计,仅仅是为了作业。
2. 系统概述
校园维修系统是一个旨在提高学生生活质量的在线维修平台。该系统允许学生通过移动设备或电脑向学校报告各种维修需求,并跟踪维修进度。同时,为学校提供一个有效的维修管理工具,优化资源分配和维修流程。
3. 技术架构
本系统采用JavaFX作为前端框架,Spring Boot作为后端框架,MyBatis用于数据库操作,而Bootstrap则提供了响应式UI组件。这种技术栈的选择考虑到了以下因素:
- JavaFX:为学生提供直观易用的桌面和移动应用界面。
- Spring Boot:简化后端开发,快速实现功能模块。
- MyBatis:高效处理数据库操作,确保系统性能。
-
Bootstrap:提供响应式布局,确保跨平台兼容性。
JavaFX
JavaFX是一个用于构建桌面应用程序的现代化GUI工具包,主要由Sun Microsyste
- 主要特点:
- 使用Java语言编写
- 提供丰富的UI组件,如按钮、文本字段等
- 支持动画效果
- 可以创建响应式用户界面
- 适用场景:开发桌面应用程序、游戏、多媒体应用等
Spring Boot
Spring Boot是一款基于Spring框架的快速开发工具包,专注于简化企业级应用开发过程。
- 主要特点:
- 自动配置功能,减少手动配置代码
- 内置嵌入式服务器,简化部署
- 强大的依赖管理
- 支持热部署
- 适用场景:开发微服务、Web应用、企业级后端系统等
MyBatis
MyBatis是一个开源的Java持久层框架,它提供了简单的SQL映射功能。
- 主要特点:
- 简化数据库操作,减少冗余代码
- 支持自定义SQL语句
- 提供XML或注解方式的配置
- 高性能,适合处理大量数据
- 适用场景:需要与数据库交互的Java应用程序开发
Bootstrap
Bootstrap是一个免费的、开源的前端框架,由Twitter开发并维护。
- 主要特点:
- 提供预构建的CSS和JS组件
- 响应式设计,适配不同设备屏幕尺寸
- 简单易用的类名系统
- 社区活跃,持续更新
- 适用场景:快速开发响应式网站、Web应用的前端部分
4. 技术整合
虽然这四种技术各自强大,但它们并不常常一起使用。在实际项目中,你可能会选择其中一种或几种技术来满足你的需求。例如:
- 如果你正在开发一个桌面应用,可以考虑使用JavaFX作为GUI框架。
- 对于后端开发,Spring Boot是一个很好的选择。
- 数据库操作可以使用MyBatis。
- 前端UI可以采用Bootstrap。
我没有系统学习过JavaFX+springboot组合,都是现学现用,有什么不对的地方,大家指教!
注:最好环境版本和我一致,不一致有各种问题 我的版本
springboot 2.1.4.RELEASE
mysql 8.0
JDK 1.8
5. 需求文档
二、开始项目
1. 创建项目
这里我使用的是idea21版 git管理代码 github代码仓库
idea=>file=>name=>porject
由于使用springboot自然就用maven管理依赖或者自己下载在项目目录,maven的使用自行了解。
这里我使用maven 因为我赖 点击Next Name项目名 改成自己想要的项目名即可 点击Finish
Maven依赖坐标 pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.1.4.RELEASE</version> </parent> <groupId>com.hello.world</groupId> <artifactId>ServiceHomeJavaFx</artifactId> <version>0.0.1</version> <name>ServiceHome</name> <description>JavaFx</description> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <!-- mvn install:install-file -DgroupId=gn -DartifactId=GNCalendar -Dversion=v1.0 -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNCalendar-1.0-alpha.jar--> <!-- mvn install:install-file -DgroupId=gn -DartifactId=GNButton -Dversion=v1.1.0 -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNButton-1.1.0.jar--> <!-- mvn install:install-file -DgroupId=gn -DartifactId=GNCarousel -Dversion=v2.1.5 -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNCarousel-2.1.5.jar--> <!-- mvn install:install-file -DgroupId=gn -DartifactId=GNDecorator -Dversion=v2.1.2-alpha -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNDecorator-2.1.2-alpha.jar--> <!-- mvn install:install-file -DgroupId=gn -DartifactId=GNAvatarView -Dversion=v1.0-rc -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNAvatarView-1.0-rc.jar--> <dependency> <groupId>gn</groupId> <artifactId>GNAvatarView</artifactId> <version>v1.0-rc</version> </dependency> <dependency> <groupId>gn</groupId> <artifactId>GNButton</artifactId> <version>v1.1.0</version> </dependency> <dependency> <groupId>gn</groupId> <artifactId>GNCalendar</artifactId> <version>v1.0</version> </dependency> <dependency> <groupId>gn</groupId> <artifactId>GNCarousel</artifactId> <version>v2.1.5</version> </dependency> <dependency> <groupId>gn</groupId> <artifactId>GNDecorator</artifactId> <version>v2.1.2-alpha</version> </dependency> <dependency> <groupId>org.fxmisc.richtext</groupId> <artifactId>richtextfx</artifactId> <version>0.10.7</version> </dependency> <!-- https://mvnrepository.com/artifact/com.jfoenix/jfoenix --> <dependency> <groupId>com.jfoenix</groupId> <artifactId>jfoenix</artifactId> <version>8.0.7</version> </dependency> <!-- https://mvnrepository.com/artifact/org.controlsfx/controlsfx --> <dependency> <groupId>org.controlsfx</groupId> <artifactId>controlsfx</artifactId> <version>8.40.14</version> </dependency> <!-- https://mvnrepository.com/artifact/io.github.typhon0/AnimateFX --> <dependency> <groupId>io.github.typhon0</groupId> <artifactId>AnimateFX</artifactId> <version>1.2.1</version> </dependency> <!-- https://mvnrepository.com/artifact/de.jensd/fontawesomefx --> <dependency> <groupId>de.jensd</groupId> <artifactId>fontawesomefx</artifactId> <version>8.9</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>io.github.fvarrui</groupId> <artifactId>javapackager</artifactId> <version>1.7.5</version> <executions> <execution> <phase>package</phase> <goals> <goal>package</goal> </goals> <configuration> <mainClass>com.token.SpringJavaFxApplication</mainClass> <bundleJre>true</bundleJre> <jrePath>D:\Java\jdk-8\jre</jrePath> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
目录结果 这里我不全部介绍 可百度 fx目录主要来配置JavaFX的东西,template下面主要放fxml文件,fxml是JavaFX的可视化实现,类似与jsp,学过web的,可以对fxml可以看着来,
在这里需要引入开源项目的web项目包 包在项目的lib哪里 这里使用maven导入 选择自己的包路径
<!-- mvn install:install-file -DgroupId=gn -DartifactId=GNCalendar -Dversion=v1.0 -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNCalendar-1.0-alpha.jar--> <!-- mvn install:install-file -DgroupId=gn -DartifactId=GNButton -Dversion=v1.1.0 -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNButton-1.1.0.jar--> <!-- mvn install:install-file -DgroupId=gn -DartifactId=GNCarousel -Dversion=v2.1.5 -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNCarousel-2.1.5.jar--> <!-- mvn install:install-file -DgroupId=gn -DartifactId=GNDecorator -Dversion=v2.1.2-alpha -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNDecorator-2.1.2-alpha.jar--> <!-- mvn install:install-file -DgroupId=gn -DartifactId=GNAvatarView -Dversion=v1.0-rc -Dpackaging=jar -Dfile=E:\idea\project\Java\ServiceHomeJavaFx\lib\GNAvatarView-1.0-rc.jar-->
使用一些开源JavaFX可视化fxml-css的jar,让项目好看高级,搭建项目完成 启动成功。
2. JavaFX
JavaFX在springboot的组合下,非常方便,在fxml里定义的属性,可以在对应的controller中注入出来,直接使用或者操作,总的来说可以使用经典后端三层架构,控制层,业务层,数据层实现项目fxml=>controller=>service=>mapper 有兴趣可以直接查询JavaFX官方文档。
3.实体类
我们知道数据实体类对应数据库表,这里我教大家快速构建实体类,在idea的database里面使用了DataGrip可视化工具,远程连接数据库,通过extensions提供的内置工具脚本快速生成数据库表对应的实体类(可自定义)
三、项目核心
1.fxml页面跳转
这里已经封装好了核心 只需要使用即可 利用枚举类实现fxml地址
2.管理员界面
3.学生界面
4.维修员界面
四、项目结束
此项目存在大量重复操作 繁琐 性能低 本人也不是学这个的 勉勉强强为了生产课作业而去实现的
我个人在此不介绍了 有源码在 请参考源码学习
存在问题请github提问。