网站下载免费的视频软件,wordpress远程唤醒,12306网站如何做解绑,菏泽县建设局网站github#xff1a;https://gitee.com/forgot940629/win-tool-demo 本地启动#xff0c;查看http://127.0.0.1:8080/form
场景
在日常工作中可能需要后端开发者开发一些辅助工具。这些辅助工具通常希望能想其他软件一样在桌面系统运行#xff0c;并且有一些桌面应用的基本…githubhttps://gitee.com/forgot940629/win-tool-demo 本地启动查看http://127.0.0.1:8080/form
场景
在日常工作中可能需要后端开发者开发一些辅助工具。这些辅助工具通常希望能想其他软件一样在桌面系统运行并且有一些桌面应用的基本功能(可视化页面配置文件日志)。与其他应用程序最大的不同是这种小工具只在很小范围内的开发者之间使用通常情况下使用者都是开发者的同事。所以对可靠性要求不会特别高(毕竟不是给客户使用)对页面美观或者交互逻辑也没有很高要求但是需要在较短的时间内实现相应功能。 本篇文章针对上述场景提供了一个demo(代码链接在最上面)便于有类似场景的java后端开发者可以快速构建出一些小工具。需要使用者有一定的spring使用经验能够写一点前端代码。
问题
问题详述交互工具如何与使用者交互命令行交互还是可视化页面如果是可视化页面选择什么技术展示页面错误软件出问题时如何排查错误如何让用户感知到错误配置很多东西不能写死在程序中不能有一点改动就需要重新编译发布。需要有一种方式可以加载配置文件发布使用者可能没有开发者相同的运行环境所以需要一种方式让没有相应运行环境的用户也可以使用此工具
方案
方案概述
问题方案交互后端使用thymeleaf编写页面程序运行之后用户可在浏览器上进行相应操作错误可视化页面中打印错误日志程序运行时在某个文件中记录运行日志配置将工作目录下特定名称的作为配置文件发布使用jpackage将可执行的jar包打包成安装包用户可通过此安装包安装程序
方案选择的原因
交互
交互的实现方案首先要考虑我会什么。我不想为了开发一个小工具而去学习其他知识没那么多时间。所以我在方案选择上只考虑了vue和thymeleaf。最终导致我抛弃vue的原因是vue好像要单独启动一个进程去提供前端页面服务(我在github上看了下halo这个项目中对于vue和thymeleaf的使用)而thymeleaf和后端应用都在一个进程启动spring之后直接就可以在浏览器上看到thymeleaf的页面。所以选择了thymeleaf。 选用thymeleaf更多的原因是我在这方面了解的确实不多如果有其他好用的且好学(最好也是用htmljs/ts编写页面)的工具辛苦大佬们告知下。 错误
web服务中错误一般通过两种形式展示出来一种是通过页面弹窗告知客户另一种是通过后端日志或者后端报警告知相关运维人员。 作为一个小工具不需要连接报警平台但是需要日志文件记录运行状况。同时为了让用户能在页面感知到相应错误我决定使用文本框展示错误信息每次新增的错误信息都追加到运行日志这个文本框中。 相比于弹窗文本框有两点好处一个是可以展示更多的错误细节甚至可以把报错堆栈打印到文本框上(因为使用者通常也是程序员所以打印报错堆栈可能更有助于使用)另一个好处是文本框有对历史报错信息的保留如果是弹窗的话可能报错信息一闪而过于是就只能F12中一条条翻看请求寻找报错信息。
配置
我能想到的最直接的设置配置文件的方式就是让程序去某个绝对路径找配置文件比如C:\config.properties。但是如果所有小工具都是这么加载配置文件那么不同的工具直接可能会共用一个配置文件会造成一些问题。比如不能同时使用多个工具因为多个工具之间会抢占端口。
所以我希望配置文件可以与程序在同一个文件夹。
为了实现这一目的我调用System.getProperty(user.dir) 获取当前工作目录(这个当前工作目录实际上就是程序安装之后exe文件所在目录后续会介绍如何生成安装包)然后在当前目录下找config.properties这个文件并加载。
发布
D:\software\jdk17\java\bin\jpackage.exe --win-dir-chooser --name PhoneNumberGeo --main-jar demo-0.0.1-SNAPSHOT.jar --input .\ --type exe
Tips
安装时尽量不要在C盘下如果一定要安装到C盘下也尽量不要放到Program Files这个文件夹下jpackage默认安装路径就是这个文件夹但是我安装到这个文件夹下之后总是会出现奇怪的问题比如日志不全或者配置文件加载错误。
待解决的问题
程序运行时没有图标只能通过任务管理器关闭程序