SpringBoot实现统一异常处理
目录前言实现步骤定义统一响应对象类定义业务异常枚举接口和实现定义业务异常基类定义全局异常处理切面测试和验证总结
前言
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端...[2024/2/5]
阿里二面:SpringBoot可以同时处理多少个请求?当场懵了。。。。阿里二面:SpringBoot可以同时处理多少个请求?当场懵了。。。。
SpringBoot以其简洁高效的开发方式和强大的内嵌容器特性,为开发者提供了构建高性能后端服务的便利。然而,当面临高并发场景时,理解并合理配置Spring Boot应用以达到最佳的并发处理能力至关重要。在Spring Boot中,应用程序对HTTP请求的并发处理主要依赖于内嵌的Servlet容...[2024/2/5]
SpringBoot 整合多数据源的事务问题
代码
先贴代码:
核心就是:Spring给我们提供的一个类 AbstractRoutingDataSource,然后我们再写一个切面来切换数据源,肯定要有一个地方存储key还要保证上下文都可用,所以我们使用 ThreadLocal 来存储数据源的key
pom.xml
<de...[2024/2/2]
Spring自带的这11个工具类,真香!
前言
最近有些小伙伴,希望我分享一些好用的工具类,帮他们提升开发效率。
今天这篇文章专门跟大家一起总结一下,Spring框架本身自带的一些好用的工具类,希望对你会有所帮助。
1 A ert
很多时候,我们需要在代码中做判断:如果不满足条件,则抛异常。
有没有统一的封装呢?
其实Spr...[2024/2/2]
Spring WebSocket实现实时通信的详细教程
简介
WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议。WebSocket 连接允许客户端和服务器之间的全双工通信,以便任何一方都可以通过已建立的连接将数据推送到另一方。
我们常用的HTTP是客户端通过「请求-响应」的方式与服务器建立通信的,必须是客户端主动触发的行为,...[2024/1/29]
springboot整合nacos的入门Demospringboot整合nacos的入门Demo
Nacos介绍
Nacos /nɑ:k?? 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特...[2024/1/29]
Spring Cloud 系列:基于Seata 实现 XA模式Spring Cloud 系列:基于Seata 实现 XA模式
https: eata.io/zh-cn/doc user/mode/xa
https: eata.io/zh-cn/doc dev/mode/xa-mode
XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Proce ing)...[2024/1/26]
SpringBoot 这么实现动态数据源切换,就很丝滑!
大家好,我是小富~
简介
项目开发中经常会遇到多数据源同时使用的场景,比如冷热数据的查询等情况,我们可以使用类似现成的工具包来解决问题,但在多数据源的使用中通常伴随着定制化的业务,所以一般的公司还是会自行实现多数据源切换的功能,接下来一起使用实现自定义注解的形式来实现一下。
基础配置
yml配...[2023/12/26]
5分钟攻略Spring-Retry框架实现经典重试场景
前言
今天分享干货,控制了篇幅,5分钟内就能看完学会。
主题是Spring-Retry框架的应用,做了一个很清晰的案例,代码可下载自测。
框架介绍
Spring-Retry框架是Spring自带的功能,具备间隔重试、包含异常、排除异常、控制重试频率等特点,是项目开发中很实用的一种框架。
本...[2023/12/22]
玩转Spring状态机
说起Spring状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring状态机就是状态模式的一种实现,在介绍Spring状态机之前,让我们来看看设计模式中的状态模式。
1. 状态模式
状态模式的定义如下:
状态模式(State Pattern)是一种行为型设计模...[2023/12/21]
Spring Cache + Caffeine的整合与使用
前言
对于一些项目里需要对数据库里的某些数据一直重复请求的,且这些数据基本是固定的,在这种情况下,可以借助简单使用本地缓存来缓存这些数据。这些介绍一下Spring Cache和Caffeine的使用。
引入依赖和CacheConfig
在pom文件里面引入下面的依赖:
<dep...[2023/12/15]
项目实战接口开发SpringBoot项目实战接口开发SpringBoot
目录一、springboot官方demo开发二、使用SpringBoot开发get方法接口三、一个要求携带cookie信息访问的get接口开发四、需要携带参数的get请求两种开发方式4.1 方式1:url:key=value&key=value4.2 方式2:url:ip:port/ge...[2023/12/15]
spring cloud生态中Feign、Ribbon、loadbalancer的一些历史
背景
本意是想写个feign中loadbalancer组件和nacos相遇后,一个兼容相关的问题,后面发现Feign这套东西很深,想一篇文章写清楚很难,就先开一篇,讲历史。
Feign、OpenFeign、Spring Cloud OpenFeign
Feign
Feign是Java生态中的一...[2023/12/15]
springboot下添加全局异常处理和自定义异常处理
前言
在spring项目中,优雅处理异常,好处是可以将系统产生的全部异常统一捕获处理,自定义的异常也由全局异常来捕获,如果涉及到validator参数校验器使用全局异常捕获也是较为方便。
相关代码:
GlobalExceptionHandler类:
@Slf4j
@RestControlle...[2023/12/13]
SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件SentinelSpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel
前言:作者查阅了Sentinel官网、51CTO、CSDN、码农家园、博客园等很多技术文章都没有很准确的springmvc集成Sentinel的示例,因此整理了本文,主要介绍SpringMvc集成Sentinel
SpringMvc集成Sentinel
一、Sentinel 介绍
随着微服务的...[2023/12/1]
springboot如何用jar包启动,同时为不同机房设置不同的配置文件
1、首先先把配置文件从jar中抽离
示例代码:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artif...[2023/12/1]
SpringBoot进阶教程(七十八)邮件服务
Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring中提供了JavaMailSender用来简化邮件配置,Spring Boot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化。
v准备工作
开通POP3/SMTP服务或者I...[2023/12/1]
Spring Cloud 整合
前言
玩SpringCloud之前最好懂SpringBoot,别搞撑死骆驼的事。Servlet整一下变成Spring;SSM封装、加入东西就变为SpringBoot;SpringBoot再封装、加入东西就变为SpringCloud
额外说明:
吊毛些,别跟贫道说没有目录,看起来不方便了,俺也...[2023/11/29]
你知道Spring中BeanFactoryPostProcessors是如何执行的吗?你知道Spring中BeanFactoryPostProcessors是如何执行的吗?
Spring中的BeanFactoryPostProce or是在Spring容器实例化Bean之后,初始化之前执行的一个扩展机制。它允许开发者在Bean的实例化和初始化之前对BeanDefinition进行修改和处理,从而对Bean的创建过程进行干预和定制化。
BeanFactoryPost...[2023/11/29]
SpringBoot 项目优雅实现读写分离
一、读写分离介绍
当使用Spring Boot开发数据库应用时,读写分离是一种常见的优化策略。读写分离将读操作和写操作分别分配给不同的数据库实例,以提高系统的吞吐量和性能。
读写分离实现主要是通过动态数据源功能实现的,动态数据源是一种通过在运行时动态切换数据库连接的机制。它允许应用程序根据不同...[2023/11/15]
Spring Cloud Seata 系列:Seata-Server (1.7.1)安装与配置(集成 Nacos)
目录一、简介术语事务模式XA 模式AT 模式TCC 模式Sage 模式说明二、Seata Server 存储模式1、file 模式①修改application.xml②启动Seata-Server2、db 模式①运行mysql.sql脚本②修改application.xml③修改 config....[2023/11/13]
Spring 缓存注解这样用,太香了!Spring 缓存注解这样用,太香了!
作者最近在开发公司项目时使用到 Redis 缓存,并在翻看前人代码时,看到了一种关于 @Cacheable 注解的自定义缓存有效期的解决方案,感觉比较实用,因此作者自己拓展完善了一番后分享给各位。
Spring 缓存常规配置
Spring Cache 框架给我们提供了 @Cacheable 注...[2023/11/10]
SpringBoot数据响应、分层解耦、三层架构
响应数据
@ResponseBody
类型:方法注解、类注解
位置:Controller方法、类上
作用:将方法返回值直接响应,如果返回值类型是 实体对象/集合 ,将会转换为json格式响应
说明:@RestController = @Controller + @ResponseBody
统一...[2023/11/3]
Spring/SpringBoot中的声明式事务和编程式事务源码、区别、优缺点、适用场景、实战
一、前言
在现代软件开发中,事务处理是必不可少的一部分。当多个操作需要作为一个整体来执行时,事务可以确保数据的完整性和一致性,并避免出现异常和错误情况。在SpringBoot框架中,我们可以使用声明式事务和编程式事务来管理事务处理。其中事务的坑也是不少,比较常见的就是事务失效,大家可以看看!后面...[2023/11/3]
【Spring】AOP实现原理
注册AOP代理创建器
在平时开发过程中,如果想开启AOP,一般会使用@EnableAspectJAutoProxy注解,这样在启动时,它会向Spring容器注册一个代理创建器用于创建代理对象,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,它实现了Sm...[2023/11/1]
一篇了解springboot3请求参数种类及接口测试
SpringBoot3数据请求:
原始数据请求:
原始方式
@RequestMapping(" impleParam")
public String simpleParam(HttpServletRequest request){
获取请求参数
...[2023/10/25]
使用Spring Integration接收TCP与UDP请求
1. 简介
Spring Integration 是一个开源的项目,它是 Spring 生态系统的一部分,旨在简化企业集成(Enterprise Integration)的开发。它提供了一种构建消息驱动的、松散耦合的、可扩展的企业应用集成解决方案的方式。Spring Integration 基于...[2023/10/23]
基于SpringBoot+Netty实现即时通讯(IM)功能
简单记录一下实现的整体框架,具体细节在实际生产中再细化就可以了。
第一步 引入netty依赖
SpringBoot的其他必要的依赖像Mybatis、Lombok这些都是老生常谈了 就不在这里放了
<dependency>
<grou...[2023/10/20]
Swagger系列:SpringBoot3.x中使用Knife4jSwagger系列:SpringBoot3.x中使用Knife4j
目录一、简介二、版本说明三、使用四、效果图
一、简介
官网:https: doc.xiaominfo.com/
Knife4j是一个集Swagger2 和 OpenAPI3 为一体的增强解决方案
Knife4j 是为 Java MVC 框架集成 Swagger 生成 Api 文档的增强解...[2023/10/19]
SpringBoot + 自定义注解 + AOP 高级玩法打造通用开关
前言
最近在工作中迁移代码的时候发现了以前自己写的一个通用开关实现,发现挺不错,特地拿出来分享给大家。
为了有良好的演示效果,我特地重新建了一个项目,把核心代码提炼出来加上了更多注释说明,希望xdm喜欢。
案例
1、项目结构
2、引入依赖
<dependency>
...[2023/10/17]
SpringBoot2.7升级到3.0的实践分享
背景
最近把项目中的技术框架做一次升级,最重要的就是SpringBoot从2.7.x升级到3.0.x,当然还会有一些周边的框架也会连带着升级,比如Mybatis Plus,SpringCloud等,话不多说直接看看有哪些事情要做。
具体事项
主要分两类,第一类是单纯的提升版本,主要如下:
...[2023/10/9]
Spring扩展接口(1):ApplicationContextInitializer
在此系列文章中,我总结了Spring扩展接口,以及各个扩展点的使用场景。并整理出一个bean在spring中从被加载到初始化到销毁的所有可扩展点的顺序调用图。这样,我们也可以看到bean是如何一步步加载到spring容器中的。
ApplicationContextInitializer
...[2023/9/25]
SpringBoot WebSocket STOMP
SpringBoot WebSocket STOMP
关键词:Springboot, WebSocket, STOMP, broadcast, sendToUser, Me ageMapping, SubscribeMapping, convertAndSendToUser
STOMP是一种发...[2023/9/25]
Dubbo3应用开发—XML形式的Dubbo应用开发和SpringBoot整合Dubbo开发Dubbo3应用开发—XML形式的Dubbo应用开发和SpringBoot整合Dubbo开发
Dubbo3程序的初步开发
Dubbo3升级的核心内容
易?性
开箱即?,易?性?,如 Java 版本的?向接?代理特性能实现本地透明调?功能丰富,基于原?库或轻量扩展即可实现绝?多数的 微服务治理能?。更加完善了多语言支持(GO PYTHON RUST)
超?规模微服务实践
?性...[2023/9/20]
快速搭建SpringBoot3.x项目快速搭建SpringBoot3.x项目
写在前面
上一小节中我们从0到1 使用Vite搭建了一个Vue3项目,并集成了Element Plus 实现了一个简单的增删改查页面。
这一篇中我们将使用IDEA快速搭建一个SpringBoot3.x的项目。
一、创建项目
1、File->new->project
2、选择...[2023/9/18]
面试官问Spring 启动流程,把这篇文章甩给他!面试官问Spring 启动流程,把这篇文章甩给他!
大家好,我是三友~~
今天来扒一扒Spring在启动过程中核心的12个步骤
之所以来写这篇文章,主要是来填坑的
之前在三万字盘点Spring 9大核心基础功能这篇文章的末尾中给自己挖了一个坑,提了一嘴有机会要写这么一篇文章
但是由于Spring启动过程并不复杂,所以后面就没写了
不过,...[2023/9/13]
SpringBoot + 自定义注解,实现用户操作日志(支持SpEL表达式)
背景
一个成熟的系统,都会针对一些关键的操作,去创建用户操作日志。
比如:
XX人创建了一条订单,订单号:XXXXXXXXX
因为操作人或者订单号是动态的,所以有些开发人员,不知道获取,就将这种操作日志和业务代码融在一起。
我们当然要杜绝这种现象,一定会有更好的解决方案。
当前项目...[2023/9/11]
Spring中事务的传播行为有哪些?
Spring中事务的传播行为有哪些?
现在我们来谈一个场景,再来引出事务传播行为这个概念。现在有methodA( ) 和 methodB( ),而且两个方法都显示的开启了事务,那么methodB( )是开启一个新事务,还是继续在methodA( )这个事务中执行,就取决于事务的传播行为了。
S...[2023/9/10]
浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程
浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程
MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,Controller(控制器)将View(视图、用户客户端)与Model(javaBean:封装数据)分开构成了MVC,今天我们浅聊一下SpringMVC的相关组件以及通过...[2023/9/9]
给你的 SpringBoot 工程部署的 jar 包瘦瘦身吧!
之前有写过一篇有关maven插件的文章:spring-boot-maven-plugin插件详解
一、需求背景
我们知道Spring Boot项目,是可以通过java -jar 包名 启动的。
那为什么Spring Boot项目可以通过上述命令启动,而其它普通的项目却不可以呢?
原因在于...[2023/9/6]
用了这么久SpringBoot却还不知道的一个小技巧
前言
你可能调第三方接口喜欢启动application,修改,再启动,再修改,顺便还有个不喜欢写JUnitTest的习惯。
你可能有一天想要在SpringBoot启动后,立马想要干一些事情,现在没有可能是你还没遇到。
那么SpringBoot本身提供了一个小技巧,很多人估计没用过。...[2023/9/1]
java与es8实战之五:SpringBoot应用中操作es8(带安全检查:https、账号密码、API Key)
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
本篇是《java与es8实战》系列的第五篇,总体目标明确:实战在SpringBoot应用中操作elasticsearch8,今天的重点是...[2023/8/30]
[超详细]SpringBoot整合WebSocket
1. 什么是WebSocket?
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它允许在浏览器和服务器之间进行实时的、双向的通信。相对于传统的基于请求和响应的 HTTP 协议,WebSocket 提供了一种更有效、更实时的通信方式,适用于需要实时更新、实时通知和实时交互的...[2023/8/29]
日志开源组件(六)Adaptive Sampling 自适应采样
业务背景
有时候日志的信息比较多,怎么样才可以让系统做到自适应采样呢?
拓展阅读
日志开源组件(一)java 注解结合 spring aop 实现自动输出日志
日志开源组件(二)java 注解结合 spring aop 实现日志traceId唯一标识
日志开源组件(三)java 注解结合 ...[2023/8/29]
java与es8实战之四:SpringBoot应用中操作es8(无安全检查)
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
本篇是《java与es8实战》系列的第四篇,系列文章写到现在,连个HelloWorld都没运行起来,实在说不过去了...
因此,本篇总体...[2023/8/29]
SpringBoot3.x原生镜像-Native Image实践
前提
之前曾经写过一篇《SpringBoot3.x 原生镜像-Native Image 尝鲜》,当时SpringBoot处于3.0.0-M5版本,功能尚未稳定。这次会基于SpringBoot当前最新的稳定版本3.1.2详细分析Native Image的实践过程。系统或者软件版本清单如下:
...[2023/8/21]
Spring源码学习笔记13——总结篇, 从IOC到AOP
系列文章目录和关于我
零丶序言
在《Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点》中,我们总结了Spring IOC部分的知识,为了更好的给群里的伙伴们分享Spring AOP的知识,遂有了这篇文章,这篇文章将从IOC聊到AOP,其中IOC不会那么细致,重点还...[2023/8/18]
Spring面试攻略:如何展现你对Spring的深入理解Spring面试攻略:如何展现你对Spring的深入理解
什么是Spring?谈谈你对IOC和AOP的理解。
Spring是一种Java开发框架,旨在简化企业级应用程序的开发和部署。它具有以下优点:
对象托管:Spring能够管理和赋值所有对象,使开发人员不再需要手动管理对象的创建和依赖关系。
动态代理:Spring的动态代理功能可以实现大部分可复用...[2023/8/16]
SpringBoot3安全管理
目录一、简介二、工程搭建1、工程结构2、依赖管理三、配置管理1、核心配置类2、认证数据源3、认证流程4、身份过滤器四、核心功能1、登录退出2、权限校验五、参考源码
标签:Security.登录.权限;
一、简介
SpringSecurity组件可以为服务提供安全管理的能力,比如身份验证...[2023/8/14]
SpringBoot3数据库集成
标签:Jdbc.Druid.Mybatis.Plus;
一、简介
项目工程中,集成数据库实现对数据的增晒改查管理,是最基础的能力,而对于这个功能的实现,其组件选型也非常丰富;
通过如下几个组件来实现数据库的整合;
Druid连接池:阿里开源的数据库连接池,并且提供SQL执行的监控能力;...[2023/8/14]