
springboot
文章平均质量分 79
springboot技术栈
厉害哥哥吖
呼哧呼哧三碗饭。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(二十一)springboot实战——Spring AI劲爆来袭
Spring AI 是一个面向人工智能工程的应用框架。其目标是将 Spring 生态系统的设计原则,如可移植性和模块化设计,应用到人工智能领域,并推广使用普通的Java对象(POJOs)作为构建应用程序的基础。原创 2024-05-05 15:21:14 · 3760 阅读 · 4 评论 -
(二十)springboot实战——springboot使用redis的订阅发布机制结合SSE实现站内信的功能
在前面的章节内容中,我们介绍了如何使用springboot项目实现基于redis订阅发布机制实现消息的收发,同时也介绍了基于SSE机制的单通道消息推送案例,本节内容结合redis和sse实现一个常用的实战案例——站内信。实现系统消息的实时推送。原创 2024-02-19 09:43:01 · 1505 阅读 · 0 评论 -
(十九)springboot实战——springboot集成redis实现消息的订阅与发布
本节内容主要介绍springboot项目通过集成redis,如何利用redis的订阅发布机制,完成系统消息的发布与订阅功能。Redis中的发布与订阅是一种消息通信模式,允许发送者(发布者)将消息发送给多个接收者(订阅者)。在 Redis中,发布与订阅通过PUBLISH和SUBSCRIBE命令实现。频道(Channel):频道是消息的通道,用于区分不同类型或主题的消息。订阅者可以选择订阅感兴趣的频道,以接收相应的消息。原创 2024-02-18 15:46:51 · 2288 阅读 · 0 评论 -
(十三)springboot实战——springboot前后端分离方式项目集成spring securtity安全框架
Spring Security 是一款强大且高度可定制的认证和访问控制框架,它是为了保护基于Spring的应用程序提供安全性支持。Spring Security 提供了全面的安全服务,主要针对企业级应用程序的需求。其核心组件主要包含:Authentication(认证)、Authorization(授权)、Principal(主体)、Granted Authority(授予的权限)、Security Context(安全上下文),可提供方法级别的权限认证。其底层主要通过Filter拦截器实现,关于其实现原理原创 2024-02-06 19:35:57 · 2368 阅读 · 1 评论 -
(十八)springboot实战——spring securtity注解方式的授权流程源码解析
在上一节内容中,我们介绍了如何在FilterSecurityInterceptor过滤器中处理用户的授权流程,并分析了其源码,spring security还提供了方法级别的授权方式,通过@EnableMethodSecurity注解启用权限认证流程,只需要在方法名上使用@PreAuthorize、@PostAuthorize、@Secured等注解就可以实现具体方法请求的权限配置,是一种更加灵活的配置方式,其底层使用aop切面实现。原创 2024-02-08 17:27:45 · 670 阅读 · 0 评论 -
(十七)springboot实战——spring securtity的授权流程源码解析
本节内容是关于spring security安全框架授权流程的源码分析,spring security的授权流程主要是在FilterSecurityInterceptor过滤器中实现的。我们会通过源码层级的分析,了解清楚spring security的底层是如何实现用户授权的。原创 2024-02-08 16:04:37 · 506 阅读 · 0 评论 -
(十六)springboot实战——spring securtity的认证流程源码解析
本节内容是关于spring security安全框架认证流程的源码分析,spring security的认证流程主要是在UsernamePasswordAuthenticationFilter过滤器中实现的。我们会通过源码层级的分析,了解清楚spring security的底层是如何实现用户的认证的。原创 2024-02-08 11:42:00 · 1161 阅读 · 0 评论 -
(十五)springboot实战——spring securtity的核心过滤器介绍
本节内容主要介绍spring securtity安全框架的一些核心过滤器及其作用,我们都清楚spring securtity安全框架底层是基于filter过滤器实现的,采用的是责任链的设计模式,它有一条很长的过滤器链。本次spring securtity原理介绍使用的版本是5.6.8,不同版本之间可能略有差异。原创 2024-02-07 17:32:03 · 1045 阅读 · 0 评论 -
(十四)springboot实战——spring securtity安全框架原理之启动流程
本节内容主要介绍spring securtity的初始化启动流程,spring security是通过@EnableWebSecurity注解来启用的,在@EnableWebSecurity注解中主要引入了WebSecurityConfiguration、SpringWebMvcImportSelector、OAuth2ImportSelector、HttpSecurityConfiguration四大组件来完成spring securtity安全框架的初始化。原创 2024-02-07 14:58:32 · 884 阅读 · 0 评论 -
(十二)springboot实战——SSE服务推送事件案例实现
SSE(Server-Sent Events,服务器推送事件)是一种基于HTTP协议的服务器推送技术。它允许服务器向客户端发送异步的、无限长的数据流,而无需客户端不断地轮询或发起请求。这种技术可以用来实现实时通信、在线聊天、即时更新等功能。使用SSE时,客户端通过简单的HTTP请求与服务器建立连接,并在连接保持打开的情况下接收服务器发送的数据。服务器可以随时向客户端发送新的数据(以文本格式),并在数据前面添加特定的标识符,以便客户端能够正确地解析数据。原创 2024-02-02 16:09:08 · 5540 阅读 · 0 评论 -
(十一)springboot实战——springboot3下关于WebFlux项目的一些常用功能整合
本节内容主要是对webflux项目一些常用功能的介绍,例如系统集成swagger接口文档,方便接口测试以及前后端项目联调测试;使用actuator完成系统各种指标的监控功能;系统使用logback日志框架完成项目日志的收集;使用过滤器WebFilter完成一些初始化验证;使用CorsWebFilter解决系统的跨域问题;使用AOP切面实现功能方法操作日志的打印等。原创 2024-01-31 15:50:26 · 1740 阅读 · 0 评论 -
(十)springboot实战——springboot3下的webflux项目mysql数据库事务处理
WebFlux 是 Spring Framework 5.0 中引入的一种新型反应式编程模型,支持非阻塞 I/O,适用于高并发、高吞吐量的应用程序。本节内容以关系型数据库mysql为例,通过使用R2DBC框架完成关系型数据库的调用,并会通过具体的案例实现webflux应用下的数据库事务管理,并包含最佳的使用实战案例,通过spring的AOP实现最终的事务控制。原创 2024-01-30 16:01:18 · 3590 阅读 · 1 评论 -
(九)springboot实战——springboot3下的webflux项目参数验证及其全局参数验证异常处理
在上一节内容中,我们介绍了如何在webflux项目中自定义实现一个全局的异常处理器ErrorWebExceptionHandler,正常情况下其可以处理我们系统的运行时异常,但是无法处理参数验证的异常WebExchangeBindException,所以这里提供另外的全局异常处理方式,通过注解@ExceptionHandler实现参数验证的全局异常处理。原创 2024-01-29 14:31:57 · 1281 阅读 · 0 评论 -
(八)springboot实战——springboot3下的webflux项目全局异常处理
在webflux响应式编程中,如何处理系统运行时异常是本节的主要内容。在传统的Servlet阻塞式web项目中主要通过HandlerExceptionResolver处理器来处理,而在webflux响应式web项目中,则是通过DispatchExceptionHandler异常处理器来处理异常。由于大量的异常可能在运行过程中产生,针对业务方法单个处理显然不是最优的选项。原创 2024-01-26 16:31:54 · 2360 阅读 · 0 评论 -
(七)springboot实战——springboot3集成R2DBC实现webflux响应式编程服务案例
本节主要内容是关于使用新版springboot3集成响应式数据库R2DBC,完成响应式web服务案例。需要注意的是,此次项目使用的JDK版本是JDK17,springboot版本使用3.2.2版本。WebFlux 是一个基于响应式编程模型的框架,适用于构建异步、非阻塞的高性能 Web 应用程序。它具有高并发能力、函数式编程风格、与其他 Spring 框架的集成能力等优势,可以满足对性能要求高或需要处理大量并发请求的场景。原创 2024-01-26 11:42:12 · 2098 阅读 · 4 评论 -
(二十七)ATP应用测试平台——基于mybatisplus和aop切面实现数据权限隔离的案例实战
在实际项目开发中,我们经常会用到俩种权限,一种是功能权限,一种是数据权限。功能权限主要是用来限制用户的操作,而数据权限是限制用户能查看到哪些数据。功能权限我们可以使用流行的框架shiro或者spring-security实现,本节内容不做介绍。关于数据权限,我们可以根据项目的需求逐个在查询条件处添加,这也是最容易想到的方案。本节内容我们提供一种更加灵活和低耦合的方式实现数据权限过滤。核心思想就是通过底层的拦截器,将数据权限的过滤条件在底层查询操作开始之前添加,这样就可以根据实际需求完成数据的过滤。原创 2023-11-10 10:28:08 · 1074 阅读 · 0 评论 -
(六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
本节内容是关于使用分布式锁解决并发访问“超卖”问题的最终篇,在前面的章节中我们介绍了使用mysql的行锁、乐观锁、悲观锁解决并发访问导致的超卖问题,存在的问题是行锁、乐观锁、悲观锁不太灵活,需要和具体的业务耦合到一起,不利于使用,本节内容我们通过mysql的唯一索引特性,数据不能重复插入,达到独占排它的基本要求,实现通用的分布式锁功能。原创 2023-11-08 16:26:50 · 790 阅读 · 0 评论 -
(五)库存超卖案例实战——使用zookeeper分布式锁解决“超卖”问题
本节内容使用zookeeper实现分布式锁,完成并发访问“超卖”问题的解决。相对于redis分布式锁,zookeeper能够保证足够的安全性。关于zookeeper的安装内容这里不做介绍,开始本节内容之前先自行安装好zookeeper中间键服务。这里我们利用创建zookeeper路径节点的唯一性实现分布式锁。并同时演示如何使用Curator工具包,完成分布式锁。原创 2023-11-01 12:32:44 · 420 阅读 · 0 评论 -
(四)库存超卖案例实战——优化redis分布式锁
在上一节内容中,我们已经实现了使用redis分布式锁解决商品“超卖”的问题,本节内容是对redis分布式锁的优化。在上一节的redis分布式锁中,我们的锁有俩个可以优化的问题。第一,锁需要实现可重入,同一个线程不用重复去获取锁;第二,锁没有续期功能,导致业务没有执行完成就已经释放了锁,存在一定的并发访问问题。本案例中通过使用redis的hash数据结构实现可重入锁,使用Timer实现锁的续期功能,完成redis分布式锁的优化。最后,我们通过集成第三方redisson工具包,完成分布式锁以上俩点的优化内容。R原创 2023-10-27 17:35:22 · 957 阅读 · 0 评论 -
(三)库存超卖案例实战——使用redis分布式锁解决“超卖”问题
在上一节内容中我们介绍了如何使用mysql数据库的传统锁(行锁、乐观锁、悲观锁)来解决并发访问导致的“超卖问题”。虽然mysql的传统锁能够很好的解决并发访问的问题,但是从性能上来讲,mysql的表现似乎并不那么优秀,而且会受制于单点故障。本节内容我们介绍一种性能更加优良的解决方案,使用内存数据库redis实现分布式锁从而控制并发访问导致的“超卖”问题。关于redis环境的搭建这里不做介绍,可查看作者往期博客内容。原创 2023-10-25 16:08:11 · 1088 阅读 · 0 评论 -
(二)库存超卖案例实战——使用传统锁解决“超卖”问题
在上一节内容中,我们详细介绍了超卖问题产生的原因,以及在单应用的项目中,如何解决超卖的问题——通过jvm本地锁控制并发访问从而解决“超卖问题”。同时我们也提出本地锁只能解决单应用服务的超卖问题,本节内容我们话接上篇,使用传统锁的方式解决在多应用服务访问中的并发问题。主要是通过mysql的乐观锁和悲观锁解决解决并发问题。原创 2023-10-23 14:52:35 · 338 阅读 · 0 评论 -
(一)库存超卖案例实战——库存超卖现象的产生及其解决方案概述
本节内容我们主要介绍一下web应用中常见的一类问题——产品“超卖”问题,通过一个springboot项目案例完成超卖现象的演示,并针对不同的应用场景下,提供这一类问题的解决方案,关于更详细的解决方案案例实战内容,请关注作者后期的博客内容。原创 2023-10-20 16:50:54 · 553 阅读 · 0 评论 -
(六)springboot实战——springboot的启动流程分析
本节内容我们主要介绍一下springboot的启动流程,它内部是如何实现启动加载的,启动过程中都做了哪些工作,这是我们比较关注的问题。原创 2023-07-25 23:02:23 · 372 阅读 · 0 评论 -
(五)springboot实战——springboot自定义事件的发布和订阅
本节内容我们主要介绍一下springboot自定义事件的发布与订阅功能,一些特定应用场景下使用自定义事件发布功能,能大大降低我们代码的耦合性,使得我们应用程序的扩展更加方便。就本身而言,springboot的事件机制是通过观察者设计模式实现。通过ApplicationListener事件监听器实现事件的发布与订阅。我们以登录场景为例,假如用户登录之后,需要发送登录通知、发送邮件通知、发送签到通知,如果按照常规做法,我们可以顺序执行以上操作,但是使用springboot的事件机制,我们可以发布一个登录的事件消原创 2023-07-25 22:19:50 · 2238 阅读 · 0 评论 -
(四)springboot实战——springboot的事件与监听器原理
本节内容是关于springboot的一些核心原理的总结,包括springboot的事件原理、生命周期流程、事件触发流程等核心内容的介绍,从而帮助我们更好的理解与使用springboot,这里只做概念性的内容总结,实战的部分请关注作者后续博客内容。原创 2023-07-23 18:19:16 · 1410 阅读 · 1 评论 -
(三)springboot实战——web新特性之函数式实现
本节内容我们主要介绍一下web访问的另一种形式,通过函数式web实现一个restful风格的http请求案例。函数式web是spring5.2之后的一个新特性,可以通过函数去定义web请求的处理流程,使得代码更为简洁,耦合性也降低了。原创 2023-07-23 15:54:59 · 764 阅读 · 1 评论 -
(二)springboot实战——springboot基于多端内容协商适配实现json、xml、yaml等格式数据统一返回
在实际应用开发场景中,我们有需求实现多端内容请求的适配,例如某些客户端需要返回json数据,有些客户端需要返回xml数据,有些客户端要返回yaml数据,这个时候就需要服务端做内容返回的适配,如果按照提供不同的接口去适配,就需要开发多套接口实现,如果有大量的接口需要适配,这种方案就明显不太适用。springboot内部也提供一套多端内容协商适配的方案。主要通过俩种方式实现,一种是基于请求头的内容适配,一种是基于请求参数的内容适配,下面我们针对这俩种方式,通过案例实现xml数据的多端内容协商适配。原创 2023-07-13 22:10:43 · 1957 阅读 · 0 评论 -
(一)springboot实战——为什么是springboot?
为什么是springboot?江湖夜雨,传说依旧,不懂springboot一技之长,如何混迹java圈,本节内容我们介绍一下spring的一些基本特性。尤其是springboot3的基本特性,使得我们更好的理解springboot3。原创 2023-06-05 21:41:15 · 1290 阅读 · 0 评论