![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
后端篇-何必重复造轮子
文章平均质量分 89
后端篇-何必重复造轮子
sum墨
自建摸鱼网站,各大网站热搜一览,上班和摸鱼很配哦!目前还没有域名,IP地址如下:http://47.120.49.119:8080/#/
展开
-
基于Spring事件驱动模式实现业务解耦
Spring的事件驱动模型由三部分组成:事件:用户可自定义事件类和相关属性及行为来表述事件特征,Spring4.2之后定义事件不需要再显式继承ApplicationEvent类,直接定义一个bean即可,Spring会自动通过PayloadApplicationEvent来包装事件。事件发布者:在Spring中可通过ApplicationEventPublisher把事件发布出去,这样事件内容就可以被监听者消费处理。事件监听者。原创 2023-03-10 16:21:00 · 795 阅读 · 0 评论 -
SpringBoot接口+Redis解决用户重复提交问题
1. 为什么会出现用户重复提交2. 重复提交不拦截可能导致的问题3. 解决办法application.properties代码文件RequestLockApplication.javaUser.javaRequestKeyParam.javaRequestLock.javaRequestLockMethodAspect.javaRequestKeyGenerator.javaRequestKeyGeneratorImpl.javaUserController.java原创 2023-03-02 17:25:52 · 2842 阅读 · 3 评论 -
使用Springboot框架手撸一个安全、可靠的本地缓存工具
在实现本地缓存的时候,我们经常使用线程安全的ConcurrentHashMap来暂存数据,然后加上SpringBoot自带的@Scheduled定时刷新缓存。虽然这样可以实现本地缓存,但既不优雅也不安全,一个好的本地缓存工具应该是这样搭建的:我的思路⭐️1. 每个处理器都有缓存名字、描述信息、缓存初始化顺序等信息,所以应该定义一个接口,名字为CacheNameDomain;2. 每个处理器都有生命周期,如初始化、刷新、获取处理器信息等操作,这应该也是一个接口,处理器都应该声明这个接口,名字为Cach原创 2022-12-16 17:52:54 · 1043 阅读 · 1 评论 -
SpringBoot整合Groovy脚本,实现动态编程
Groovy 是增强 Java 平台的唯一的脚本语言。它提供了类似于 Java 的语法,内置映射(Map)、列表(List)、方法、类、闭包(closure)以及生成器。脚本语言不会替代系统编程语言,两者是相互补充的。大名鼎鼎的 Gradle,背后是 Groovy。Spring 的未来越来越多的使用 Groovy,甚至在用 Jira 跟踪项目时,背后也有 Groovy。实际上,就应用场景而言,Java 开发已经有越来越多的 Groovy 出现在后台了。原创 2022-09-05 20:51:50 · 2448 阅读 · 3 评论 -
使用Java优雅的实现先查询缓存再查询数据库
里面全部是接口,并且都被注解所修饰。Function分类Consumer(消费)接受参数,无返回值Function(函数)接受参数,有返回值Operator(操作)接受参数,返回与参数同类型的值Predicate(断言)接受参数,返回boolean类型Supplier(供应)无参数,有返回值https。...原创 2022-07-27 10:02:27 · 1099 阅读 · 0 评论 -
SpringBoot项目实现日志打印SQL明细(包括SQL语句和参数)几种方式
对比上面这三种方式,其中p6spy打印的sql最完整,是可以直接放在数据库工具上执行的,而不是像Mybatis打印那种参数带问号的。但其实打印这些sql语句挺消耗性能的,建议到了线上把它给关掉,避免非业务消耗资源。......原创 2022-07-21 20:32:03 · 16780 阅读 · 5 评论 -
SpringBoot中几种好用的代码生成器(基于Mybatis-plus生成entity、mapper、xml等)
熟悉Spring框架的同学一定都知道MVC开发模式吧,控制器(Controller)、业务类(Service)、持久层(Repository)、数据库映射(Mapper)、各种DO类构成了我们服务端的代码。初学的时候,觉得新鲜手写这些东西不觉得有啥,但是写久了就会觉得很烦。好不容易在数据库中写完了一遍字段,在Java代码又要写一遍,不仅很枯燥,关键是还容易写错!!!这种工具不仅有,而且有很多,首先推荐一个最最简单的:在线版Java代码生成器如果有用过bejson在线工具的小伙伴,应该很熟悉,不过这个工具有原创 2022-07-14 18:50:33 · 12036 阅读 · 5 评论 -
SpringBoot整合kaptcha实现图片验证码功能
登录,是所有系统都绕不开的一道坎,很多系统会在用户名和密码下发放置一个图形验证码,例如:这些图形验证码看起来不仅很丑,而且模糊,但却是保护系统的第一道屏障,它的作用是:。实现这个功能并不复杂,但是为了不让大家重复造轮子,这里我给大家推荐一个现成的轮子:,使用起来非常简单,废话不多说直接上代码。项目代码项目结构VerifyCodeConfig.javaKaptchaController.java测试一下2、获取图片3、演示一下后台打印:访问链接:...............原创 2022-07-11 20:46:34 · 845 阅读 · 0 评论 -
SpringBoot整合阿里云OSS,支持文件上传、下载、删除、加签等操作
存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。您可以根据实际需求,创建不同类型的存储空间来存储不同的数据。对象是OSS存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,例如最后修改时间、大小等信息,同时您也可以在元信息中存储一些自定义的信息。地域表示OSS原创 2022-06-09 16:55:02 · 4127 阅读 · 0 评论 -
SpringBoot整合阿里云SchedulerX分布式任务调度组件
分布式任务调度SchedulerX 2.0是阿里巴巴基于Akka架构自研的新一代分布式任务调度平台。兼容开源XXL-JOB、ElasticJob,支持Cron定时、一次性任务、任务编排、分布式执行批量任务等功能,具备高可用、可视化、可运维、低延时等能力...原创 2022-07-06 20:01:29 · 2232 阅读 · 4 评论 -
SpringBoot整合ip2region实现使用ip监控用户访问城市
那么这个功能都是如何实现的呢?一般有两个方法:由于每个手机都不一定会打开 GPS,而且有时并不太需要太精确的位置(到城市这个级别即可),所以根据 IP 地址入手来分析用户位置是个不错的选择。所以ip2region框架应运而生,GitHub上⭐️已经10.6K,值得一用。GitHub地址:https://github.com/lionsoul2014/ip2region这里有三份ip地址库,我们将ip2region.xdb复制出来,等下我们的java项目中需要使用到。pom.xml依赖如下:加好依赖后,在目原创 2022-07-04 14:46:04 · 1138 阅读 · 0 评论 -
SpringBoot整合EasyExcel实现Excel表格的导出功能
在后端管理系统的开发中,经常有需要,有些前端表格组件可以直接做到,但是不够灵活。因为前端拿到的数据始终是经过处理的,如果想拿到原版数据,必须后端处理。如下图:除了使用Apache POI包,还有没有其他的选择?当然有!这里我给大家推荐一款非常简单且容易上手的开源组件:首先放出官网地址,欢迎大家star(目前已经24K):EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。64M内存20秒读取75M(46W行25列)的Excel(原创 2022-06-29 10:06:43 · 2778 阅读 · 0 评论 -
SpringBoot整合Swagger2实现接口文档自动生成
访问地址:访问地址:现在的开发模式都是前后端分离,在联调阶段,后端同学需要向前端同学提供api文档。一个清晰加美观的文档可以减少很多口水仗,是维护和谐开发氛围的必需品。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。它有如下几个特点:这里需要注意一个版本对应的问题,如果使用了高版本的SpringBoot框架,低版本的Swagger,会出现如下报错:这是因为:以下几个版本是兼容的......原创 2022-06-27 20:41:52 · 823 阅读 · 0 评论 -
SpringBoot整合aspectj实现面向切面编程(即AOP)
…上面的场景都是真实存在的需求,但是如果不能统一处理的话,基本都是一改一大片,除了对业务代码有很强的侵入性,而且难以保证不出问题。所以为了解决这种需求,AspectJ框架应运而生。不过SpringBoot官方也推出了 Spring AOP, 具体对比我就不赘述了,详细对比可以参https://www.jianshu.com/p/872d3dbdc2ca2、创建切面类并加上@Component注解这一步相当于把切面类的管理权交给了Spring容器,让Spring容器负责该对象的创建与销毁,我们负责使用就行原创 2022-06-24 17:21:04 · 4666 阅读 · 0 评论 -
SpringBoot整合MyBatis实现多行合并(collection标签使用)
现有如下表结构,用户表、角色表、用户角色关联表。一个用户有多个角色,一个角色有可以给多个用户,也即常见的。现有这样一个需求,分页查询用户数据,除了用户ID和用户名称字段,还要查出这个用户的所有角色。从上面的表格我们可以看出,用户有三个,但每个人的角色不止一个,而且有重复的角色,。SQL存在的问题:服务端存在的问题:下面是collection标签的一些介绍常见写法尝试一下1、准备材料数据库脚本SpringBoot项目pom.xmlSpringBoot项目application.pro原创 2022-06-23 19:37:33 · 2364 阅读 · 0 评论 -
SpringBoot 给RestTemplate的Get请求设置RequestBody参数
我们可以修改为httpclient,只需要使用HttpComponentsClientHttpRequestFactory,但是默认的httpclient的GET请求也是不支持传递body的。有两个用于定义Http请求的基础抽象类:HttpRequestBase、HttpEntityEnclosingRequestBase,前者扩展的不能传递body,而后者可以。首先,引入httpClient依赖:在config文件夹下创建HttpComponentsClientRestfulHttpRequestFac原创 2022-06-20 19:39:16 · 1898 阅读 · 0 评论