Spring Boot项目和依赖分离打包

用Spring Boot开发单体应用,一般也就是编译打包为一个jar包,然后java -jar **”优雅”**启动,方便快捷,平时工作中也完全是整个jar再构建成Docker镜像,部署到K8S上。所以,并不是很关心jar的大小。直到前几天,一个朋友说要做个小应用。我就用RuoYi Plus 帮他快速干了一个项目。最终打包下来169M,就目前千兆宽带来说,这个大小,小意思啦。问题是在于,他还要通过VPN传到内网上去,大概就200KB每秒,这样一来,重新部署一次,就这个传输时间就比较耗时了。这就得把依赖包独立出来,不统一打包进项目的jar,让项目包瘦下来。

阅读更多
Spring Boot一站式优雅处理统一返回值封装、异常处理、异常错误码

Spring Boot一站式优雅处理统一返回值封装、异常处理、异常错误码

在使用Spring Boot开发时如何优雅地处理统一返回值封装、异常处理和异常错误码。这些是日常开发中非常重要的问题,而Spring Boot提供了一些简单的配置和特性,帮助我们轻松实现这些功能,使得代码更加易于维护和阅读。

异常处理 在应用程序中,异常情况是无法避免的。为了保证应用的稳定性和可靠性,我们需要对异常进行适当的处理和反馈。而Spring Boot提供了多种方式来处理异常情况,例如使用@ExceptionHandler注解或自定义异常类等。

使用@ExceptionHandler注解可以将指定异常和方法进行关联,在出现指定异常时,Spring Boot会自动调用这个方法进行异常处理。比如,我们可以创建一个名为”GlobalExceptionHandler”的类,在这个类中定义一些处理特定异常的方法。通过这样的方式,我们能够更好地控制异常情况的处理,并且向用户返回友好的错误提示。

异常错误码的处理 异常错误码通常被用于标识不同的异常类型或错误情况。它能够帮助我们快速定位和调试问题,并向用户提供清晰明了的错误信息。在Spring Boot中,我们可以使用枚举类或自定义异常类的方式来定义异常错误码。

使用枚举类的方式是比较简洁和方便的,我们可以定义一个包含错误码和错误消息的枚举类。通过根据业务需求选择合适的枚举值,我们能够快速查找到对应的错误码并向用户返回错误消息。

当然,平时我们也是自己直接百度堆代码,这几天在看博客园的时候,发现2个不错的开源组件,可以快速处理我们日常的统一返回值封装、异常处理、异常错误码的需求。

阅读更多
Spring Boot使用EasyExecl自定义颜色填充指定单元格背景
Hutool一行代码下载文件,无需落地解压文件并上传到MinIO

Hutool一行代码下载文件,无需落地解压文件并上传到MinIO

最近对接外部系统,需要每天定时获取电子回单,我们一致默认回单是pdf,所以,我们系统并没有做文件存储,直接存了文件地址,由于事先没有沟通好回单的传输格式,以至于在系统上线之后才发现,外部系统提供的文件格式和预想中的不一样。他们是把pdf的回单压缩了一次。这使得我们无法直接将文件传输到税务系统。外部系统是提供的他们所谓的标准接口,如果要调整也可以,加钱,说到钱,那就只有自己来解决了。

阅读更多

Hutool快速处理金额大小写格式化

一般来说,系统在设计到金额的地方,为了更好的体验,需要对金额进行格式化,如:金额小写时,千分位分割;大写金额时需要到元角。如果要我们自己写,想来也得花点时间去做逻辑上的处理。但是,Hutool已经为我们封装好了便捷的工具类方法。

阅读更多
Spring Boot 基于jodconverter实现Office转PDF

Spring Boot 基于jodconverter实现Office转PDF

每次去易企签获取签署连接嵌入页面时,都需要等待20s+,这个过程让人有些无法忍受,之前,我方业务有咨询过易企签原因。他说:你们传过来的文档为非PDF文档,我们这边需要将接收到的文件转换为PDF,这个过程比较耗时。好吧,既然你们都这么说了,那传给你之前先帮转好,这样,你就没话说了吧。

阅读更多
Spring Boot整合DataX同步数据

Spring Boot整合DataX同步数据

我们系统的基础数据存放在EBS中,的有个基础数据同步功能,因为变化频率比较低,所以采用定时加手动的方式同步,每日凌晨三点由ETL工具同步到我们中间表,然后存储过程再处理数据。手动则是程序调用Kettle脚本同步数据到中间表没然后执行存储过程。刚开始上线时,量较小,也就几万条数据,手动同步比较快,越到后期,数据量逐渐增多,达到一百多万的基础数据,通过Kettle同步一次得花十多分钟。业务方实在无法忍受,要求我们必须优化。

阅读更多
Mybatis Plus批量插入数据到MySQL中

Mybatis Plus批量插入数据到MySQL中

作为CRUD程序员,大部分Java开发者应该都在用Mybatis Plus来操作数据库。但是BaseMapper默认仅提供了int insert(T entity)这个单条插入的方法。那么我们想批量插入数据该怎么办呢?

阅读更多
Spring Boot整合WxJava快速实现生成小程序码

Spring Boot整合WxJava快速实现生成小程序码

最近业务给咱们开发同事提了一个很简单的需求-生成小程序码,同事可能是平时写CRUD写多了,听到是不熟悉的领域的东西就觉得有些头大,便来问我如何实现,我说:“这个得看官方说明文档了,然后调接口实现。如果觉得麻烦就找开源组件直接引用即可,比如WxJava”。可能是我表述得不够清楚,同事依然一脸懵逼,感觉甚是复杂。

阅读更多