springboot
文章平均质量分 53
springboot
ldcaws
这个作者很懒,什么都没留下…
展开
-
springboot之@Async异步定时任务自定义线程池
Async是一个注解,其作用就是加上该注解的类或方法能够异步执行任务,该注解添加到方法上时,表示该方法是异步方法,添加到类上时,表示该类中的所有方法都是异步方法。当在使用@Async时,如果不指定具体的线程池名称,那么其使用的是默认线程池SimpleAsyncTaskExecutor。核心线程数:8容量:Integer.MAX_VALUE最大线程数:Integer.MAX_VALUE空闲线程存活时间:60s允许核心线程超时:true。原创 2023-08-23 19:00:00 · 1503 阅读 · 0 评论 -
springboot+shiro+redis实现session共享和cache共享
在分布式应用中,若是使用了负载均衡,用户第一次访问,连接的A服务器,进行了登录操作进入了系统,当用户再次操作时,请求被转发到了B服务器,用户并没有在B进行登录,此时用户又来到了登录页面,这是难以理解和接受的,这就引出了session共享。对于shiro安全框架如何实现session共享?shiro共享分为两方面,一个是session共享,一个是cache共享。下面聊聊在springboot工程中整合shiro框架,并通过redis实现session共享和cache共享。原创 2023-06-26 19:00:00 · 2626 阅读 · 1 评论 -
springboot集成redis集群实现集群拓扑动态刷新
一个redis-cluster的三主三从集群,在其中一个master节点挂了之后,springboot集成redis集群配置信息没有及时刷新,出现读取操作报错。下面聊聊如何实现springboot集成redis集群实现集群拓扑动态刷新。原创 2023-06-16 22:31:51 · 4770 阅读 · 0 评论 -
springboot+mybatis搭建maven多模块工程
最近看了一篇博客,选定springboot+mybatis作为框架,在idea中搭建maven的多模块工程,下面也再温习一下,并将搭建过程分享出来,供小伙伴们参考。原创 2023-05-06 22:15:00 · 2048 阅读 · 0 评论 -
springboot中统一功能处理浅析
在springboot工程中实现统一功能的处理,主要分析以下3个统一功能场景:1、统一用户登录权限验证2、统一数据格式返回3、统一异常处理。原创 2023-04-24 20:00:00 · 706 阅读 · 0 评论 -
springboot中生成csv文件浅析
实现万能的工具类生成csv文件,当不确定类的集合list时,通过反射取出里面的属性名,做第一行表格行标题;通过反射吧类全部字段属性作为key放到map里,同时把值放到value里。原创 2023-04-17 21:41:33 · 881 阅读 · 0 评论 -
Java中定时任务浅析
Java中有那些定时任务的实现方式,下面从java原生和spring封装对动态管理定时任务的实现简单的聊一聊,不涉及外部组件的实现方式。原创 2023-03-21 20:00:00 · 587 阅读 · 0 评论 -
springboot+mongodb初体验
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。原创 2023-02-01 20:00:00 · 1171 阅读 · 0 评论 -
MongoDB下载安装
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。原创 2023-01-31 15:44:25 · 1884 阅读 · 0 评论 -
springboot+mybatisplus实现分页
在日常开发中,多记录的列表查询可能会遇到分页处理的场景,在springboot项目中传统是引入mybatis组件进行持久化,然后通过pagehelper组件进行分页实现。下面体验一下在springboot项目中引入mybatisplus组件,通过其自带分页插件实现分页功能。原创 2023-01-17 14:47:45 · 7669 阅读 · 0 评论 -
springboot+sa-token-quick-login实现快速登录
试想一下,假如我们开发了一个非常简单的小系统,比如说:服务器性能监控页面, 我们将它部署在服务器上,通过访问这个页面,我们可以随时了解服务器性能信息,非常方便。然而,这个页面方便我们的同时,也方便了一些不法的攻击者,由于这个页面毫无防护的暴露在公网中,任何一台安装了浏览器的电脑都可以随时访问它!当你的项目需要一个登录认证功能,这个登录界面可以不华丽、可以烂,但是一定要有,同时你又不想花费太多的时间浪费在登录页面上, 那么你便可以尝试一下Sa-Token-Quick-Login。原创 2023-01-11 19:00:00 · 1079 阅读 · 0 评论 -
springboot之webmvc和webflux浅析
webmvc是基于servlet的阻塞式模型,一个请求到达服务器后会单独分配一个线程去处理请求,如果请求包含IO操作,线程在IO操作结束之前一直处于阻塞等待状态,这样线程在等待IO操作结束的时间就浪费了。webflux内部使用的是响应式编程(Reactive Programming),以 Reactor 库为基础,基于异步和事件驱动,可以让我们在不扩充硬件资源的前提下,提升系统的吞吐量和伸缩性。webflux是一个异步非阻塞式的 Web 框架,它能够充分利用多核 CPU 的硬件资源去处理大量的并发请求。原创 2023-01-10 19:00:00 · 2171 阅读 · 0 评论 -
springboot+xxl-job初体验
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;执行器HA(分布式):任务分布式执行,任务”执行器”支持集群部署,可保证任务执行HA;详细查看官网。原创 2023-01-09 20:00:00 · 728 阅读 · 0 评论 -
springboot+disruptor再体验
Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。disruptor在github网址为:https://github.com/LMAX-Exchange/disruptor。引用disruptor作为内部的高性能队列,应用于生产者-消费者模式中还是非常nice的,后面若有工程需求可以尝试一下。Disruptor是一个高性能队列,常见的还有kafka、rabbitmq等,下面体验一下~原创 2023-01-04 20:00:00 · 954 阅读 · 4 评论 -
本地缓存浅析
java中的缓存技术可以分为远端缓存和本地缓存,其中远端缓存常用的技术有redis、memcache等,而本地缓存常用的技术有HashMap、Guava Cache、Caffeine、Encache。下面聊一下Caffeine缓存技术及简单应用。1、HashMap通过Map的底层方式,直接将需要缓存的对象放在内存中。不需要引入第三方jar包,但需要对HashMap进行封装研发,添加缓存淘汰策略等,如自定义LRU策略的缓存类。2、CaffeineGuava Cache是由Google开源的基于LRU原创 2022-12-03 20:30:00 · 1059 阅读 · 0 评论 -
springboot中controller层代码优雅写法
统一返回值类型,无论项目前后端是否分离都是非常必要的,方便对接接口的前端开发人员更加清晰地知道这个接口的调用是否成功,不能仅仅简单地看返回值是否为 null 就判断成功与否,因为有些接口的设计就是如此。在基于spring框架的项目开发中,必然会遇到controller层,它可以很方便的对外提供数据接口服务,也是非常关键的出口,所以非常有必要进行规范统一,使其既简洁又优雅。自定义异常是为了后面统一拦截异常时,对业务中的异常有更加细颗粒度的区分,拦截时针对不同的异常作出不同的响应。原创 2022-11-28 22:00:56 · 3392 阅读 · 1 评论 -
springboot中实现动态修改定时任务循环时间
在springboot工程中实现定时任务很常见,那么如何动态修改定时任务的循环时间?调用两个接口,修改方式一每20秒执行一次,方式二每30秒执行一次,如下。下面为在springboot工程中动态修改定时任务的循环时间的实现。3、定时任务的执行时间配置文件,task-config.ini。默认,方式一每10秒执行一次,方式二每15秒执行一次,如下。1、新建springboot工程,引入web依赖。感兴趣的可以亲身尝试一下~~~///(6、接口,动态修改循环时间。4、定时任务类方式一。5、定时任务类方式二。原创 2022-11-09 21:45:00 · 2614 阅读 · 0 评论 -
springboot+netty实现UDP监听两个端口
在springboot工程中集成netty框架实现UDP通信,在CommandLineRunner的初始化启动时启动两个UDP监听服务。原创 2022-11-02 21:54:38 · 3146 阅读 · 6 评论 -
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test
在springboot工程中,spring-boot-maven-plugin插件已经集成了maven-surefire-plugin插件,会自动运行 junit test,需要在pom中增加如下配置。在idea工具中的maven面板中点击Toggle ‘Skip Tests’ mode,再次打包就正常了。其中,-Dmaven.test.skip=true 和 -DskipTests的作用如下。打包命令如下:clean package。在Terminal执行命令。在Terminal执行命令。原创 2022-10-12 19:30:00 · 2066 阅读 · 0 评论 -
springboot+责任链模式初体验
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?责任链模式,是为发送者和接受者之间创建一条对象处理链路,避免请求的发送者与请求的接受者耦合在一起。8、还可以对上面的OrderHandleChainService类通过手动add的方式排序,如下。若是需要天津其他的处理流程,只需要重新实现一个就行,其他代码无需改动。原创 2022-10-08 21:26:24 · 1435 阅读 · 6 评论 -
springboot+knife4j初体验
Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案,帮助开发者快速聚合使用OpenAPI规范。原创 2022-08-18 19:30:00 · 1127 阅读 · 0 评论 -
springboot+mapstruct初尝试
在日常开发中,是不是经常遇到实体转换的需求,敲实体转换的代码让人头疼又无奈,特别是字段多的时候,常用的工具有BeanUtils,下面尝试一个开源项目mapstruct,可以轻松优雅的对PO、VO、DTO进行转换。mapstruct是一种实体类映射框架,能够通过Java注解将一个实体类的属性安全地赋值给另一个实体类。有了mapstruct,只需要定义一个映射器接口,声明需要映射的方法,在编译过程中,mapstruct会自动生成该接口的实现类,实现将源对象映射到目标对象的效果。 ...原创 2022-08-17 19:30:00 · 343 阅读 · 0 评论 -
springboot+mybatis-plus初尝试
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。原创 2022-08-15 19:30:00 · 612 阅读 · 5 评论 -
springboot+shiro中自定义session过期时间
在springboot工程中,使用shiro作为权限框架,并采用redis来管理session时,如何自定义session过期时间?原创 2022-08-12 20:30:00 · 5139 阅读 · 0 评论 -
springboot+aop实现限流方式浅析
限流,就是在某个时间窗口对资源访问做次数限制,如设定每秒最多100个访问请求。限流具有两个维度,如下在实际开发中,不止设置一种限流规则,而是设置多个限流规则共同作用,常见限流规则如下限流常见方法如下在springboot工程中,通过aop的方式实现限流,应用场景有采用guava的速率限流、采用redis的指定时间指定次数限制、socket请求限制、http请求限制。实例2:redis指定时间指定次数限制或切面环绕无返回,请求返回为空实例3:socket请求限流...原创 2022-08-07 14:06:41 · 1823 阅读 · 2 评论 -
Java中实现http请求的方式
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。RestTemplate提供了常见的REST请求方案的模版,例如GET请求、POST请求、PUT请求、DELETE请求以及一些通用的请求执行方法exchange以及execute。在java开发中,经常遇到需要调用第三方提供的接口服务的需求,下面对实现http请求的方式进行浅入浅析并进行实例尝试。...原创 2022-07-19 19:00:00 · 7284 阅读 · 0 评论 -
springboot+disruptor初尝试
Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,基于 Disruptor 开发的系统单线程能支撑每秒 600 万订单,2010 年在 QCon 演讲后,获得了业界关注。Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟。...原创 2022-07-07 19:33:37 · 696 阅读 · 0 评论 -
springboot+flowable工作流三三来迟
springboot集成flowable工作流之梅开三度,常言道温故而知新,咱也回故一下。原创 2022-06-21 22:30:00 · 873 阅读 · 3 评论 -
springboot+elasticsearch再尝试
elasticsearch作为一个开源的检索引擎产品,继续分析其关键概念、原理和应用场景。原创 2022-06-18 19:30:00 · 497 阅读 · 0 评论 -
springboot+elasticsearch实现全文检索
ElasticSearch 是一个分布式、可扩展、高性能的检索与数据分析引擎。ElasticSearch 基于 Java 编写,通过对Lucene进一步封装 ,将搜索的复杂性屏蔽起来,开发者只需要一套简单的 RESTful API 就可以操作全文检索。...原创 2022-06-13 21:00:00 · 3403 阅读 · 0 评论 -
springboot中undertow初尝试
在springboot框架中,我们经常使用、使用最多的是tomcat容器,这是springboot默认的容器技术,而且是内嵌式的tomcat。同时,springboot也支持undertow容器,而且可以方便的用undertow替换tomat,undertow的性能和内存使用方面都优于tomcat。...原创 2022-06-10 19:00:00 · 823 阅读 · 0 评论 -
springboot中request和response的加解密实现
在系统开发中,需要对请求和响应分别拦截下来进行解密和加密处理,在springboot中提供了RequestBodyAdviceAdapter和ResponseBodyAdvice,利用这两个工具可以非常方便的对请求和响应进行预处理。1、新建一个springboot工程,pom依赖如下2、自定义加密、解密的注解其中加密注解放在方法上,解密注解可以放在方法上,也可以放在参数上。3、加密算法定义一个加密工具类,加密算法分为对称加密和非对称加密,本次使用java自带的Ciphor来实现对称加密,使用AES原创 2022-06-06 20:00:00 · 2595 阅读 · 3 评论 -
springboot中自启动方式浅析
在springboot项目中启动时需要预加载一些资源,这时需要通过自启动的方式来执行指定任务的代码,可以通过static代码块、构造方法、注解@PostConstruct、ApplicationRunner、CommandLineRunner的方式来实现。下面对几种方式进行简单的分析。原创 2022-06-01 20:00:00 · 1157 阅读 · 0 评论 -
springboot+lucene实现全文检索
Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目,也是目前最为流行的基于 Java 开源全文检索工具包。Lucene提供了一个简单却强大的应用程序接口(API),能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放源代码工具。Lucene全文检索就是对文档中全部内容进行分词,然后对所有单词建立倒排索引的过程。主要操作是使用Lucene的AP原创 2022-06-01 19:00:00 · 5167 阅读 · 2 评论 -
springboot+mybatis实现多数据源配置
springboot+mybatis实现多数据源配置原创 2022-05-30 19:00:00 · 9046 阅读 · 9 评论 -
springboot的jar包启动时指定加载的配置文件
springboot会按照下列优先级来加载application.properties配置文件,由高到低依次为:jar包同级目录下的config目录下的application.propertiesjar包同级目录下的application.propertiesclasspath下的config目录下的application.propertiesclasspath下的application.properties若不想通过上面的方式,可以使用命令指定配置文件所在位置java -Dspring.c原创 2022-05-10 19:00:00 · 6757 阅读 · 2 评论 -
springboot工程中实现跨域方式浅析
同源策略是一种约定,它是浏览器最核心、最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。跨域,当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。对于cors跨域请求,可以通过如下方式进行设置:原创 2022-05-05 19:00:00 · 175 阅读 · 0 评论 -
springboot+validation参数校验浅入浅出
在spring开发中,对入参进行校验是一种常见且必须的需求,下面对springboot中引入validation组件实现校验进行简单的分析一下。Java API 规范 JSR303 定义了 Bean 校验的标准,但没提供实现,而常用的hibernate validation则是对这个规范的实现,提供了校验注解@Min、@Max等。spring validation是对hibernate validation的二次封装,用于spirng中参数的校验。若springboot版本低于2.3.时,spring-原创 2022-05-04 19:54:29 · 1606 阅读 · 0 评论 -
springboot+minio文件存储初尝试
文件服务算是一个基础服务了,比较专业的组件有FastDFS,也可以采用基本的保存在本地的文件上传方式,但是其安全性不高。下面聊聊springboot集成文件服务组件MinIO。MinIO是一个基于Apache License v2.0开源协议的对象存储服务,非常合适存储大容量非结构化的数据,如图片、视频、日志文件等,一个对象文件的大小可以是几KB到5T不等。MinIO是一个轻量级的服务,类似redis、mysql,可以很方便的和其他应用结合。MinIO的特点请查看官网,https://min.io/。原创 2022-04-27 20:00:00 · 1089 阅读 · 0 评论 -
springboot中打包发布后无法读取json文件问题浅析
springboot工程中读取json文件是一个非常常见的操作,在本地idea运行调试的时候读取json文件没有任何问题,但是打包发布后运行会报读取不到json文件的问题,解决方法如下要将json文件放到static目录下,如/static/config/读取json文件要用ClassPathResource和fastJson操作示例:// 1ClassPathResource resource = new ClassPathResource("static/config/Info.json"原创 2022-04-21 22:00:00 · 2018 阅读 · 0 评论