
2025最新-框架-spring boot
文章平均质量分 75
spring-boot、Spring Cloud以及spring-framework的源码解析,以及遇到的问题,这个是主攻的源码解读专栏之一,以后会持续更新,不喜勿定,自己的笔记
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
九师兄
可免费问问题,可以一次订阅,终身免费问问题。工作多年遇到的问题,与一些总结,注意事项等,有些是源码级别的讲解,同时整个博客是成体系的,里面有很多连接互相连接,问题都是拆开的,能让大家遇到问题的时候方便的解决问题,或者提供思路。也可以单独找我解决问题。
展开
-
【Spring】自定义异常处理HandlerExceptionResolver
HandlerExceptionResolver顾名思义,就是处理异常的类,接口就一个方法,出现异常之后的回调,四个参数中还携带了异常堆栈信息我们自定义异常处理类就比较简单了,实现上面的接口,然后将完整的堆栈返回给调用方/**** todo: 九师兄 2023/4/26 10:44* 访问地址 http://localhost:8082/page/divide?sub=0* 界面报错* 自定义异常处理!!!try {原创 2025-01-15 00:15:00 · 125 阅读 · 0 评论 -
【Spring】Spring Boot接入XXL-JOB任务调度
接下来,我们需要创建一个自定义配置类来初始化 XxlJobSpringExecutor。import org。原创 2025-01-11 00:30:00 · 104 阅读 · 0 评论 -
【Spring】Spring jpa 报错 could not extract ResultSet marked as broken because of SQLSTATE 08006
解决后,后面的没看了,但是为什么我只想一个接口,为什么会这样呢?这里是一个简单的jpa查询,查询接口如下findByIsDeleteFalse,但是我刷新界面,其他的都是正常的。今天遇到一个问题,我们一个老的代码,我们原先使用是MySQL,现在我们使用postgresql,然后报错。经分析,可能是数据量过载导致服务器链接中断了,最后利用递归实现list查询,问题解决。但是后面还有jpa,然后发现还报错,后面把这个改成异步操作,然后就好了。但是我本地运行,发现是正常的,那么排除这个问题。原创 2024-12-08 00:30:00 · 318 阅读 · 0 评论 -
【Spring】Spring中有两个id相同的bean对象会报错吗?
但是在Spring两个不同的配置文件中是可以存在id相同的两个bean,IOC容器会把多个id相同的bean进行覆盖,但是在Spring 3.0中发生了变化,其中用到了@Configuration注解。因此,为了避免在Spring中出现id相同的冲突,确保每个bean对象具有唯一的id。在注解驱动的Spring应用程序中,如果存在相同id的bean对象,同样会抛出异常。在Spring框架中,如果存在两个id相同的bean对象,会导致启动时的冲突,从而抛出异常。异常,指示冲突的bean定义。原创 2024-11-08 00:15:00 · 494 阅读 · 0 评论 -
【Spring】Spring为什么要事务传播?Spring 事务传播行为的本质是什么?
我们以前学习Spring 知道Spring有好几种事务传播行为,但是却从来没有思考过Spring为什么要事务传播?Spring 事务传播行为的本质是什么?所以我们司机硬背,然后因为开发中又不经常使用,然后还经常忘记,所以这里了解了本质,那么就更容易记忆,或者仅仅靠着自己的知识就能推导出来。所谓的事务传播行为就是说多个声明事务的方法,相互调用的时候,这个事务应该如何传递?你先自己想一下。原创 2024-11-04 00:15:00 · 377 阅读 · 0 评论 -
【Spring】SpringBoot中配置优先级是怎样的?
视频:阿里二面:SpringBoot中配置优先级是怎样的?只用了一张图彻底搞明白了。。原创 2024-11-02 00:30:00 · 52 阅读 · 0 评论 -
【Spring】Spring的ApplicationEnvironmentPreparedEvent事件、环境准备事件
请注意,ApplicationEnvironmentPreparedEvent 在应用程序的早期阶段触发,此时应用程序的上下文尚未完全加载,因此在这个事件中进行的操作可能是有限的。如果需要在更晚的阶段执行操作,可以考虑使用其他的 Spring 事件,如 ApplicationStartedEvent 或 ApplicationReadyEvent。上述示例中,当应用程序的环境准备阶段触发 ApplicationEnvironmentPreparedEvent 事件时,监听器中的代码将被执行。原创 2024-11-02 00:15:00 · 55 阅读 · 0 评论 -
【Spring】Spring 什么时候打印的 The following profiles are active
然后那一会经常遇到获取到的active profiles是空的,如下图,然后就想知道 active profiles是什么时候初始化的,什么时候打印的。在这个文章中,我们知道是ApplicationEnvironmentPreparedEvent事件触发这个文件加载的。然后打印的位置是在SpringApplication的run方法里面的prepareContext中打印的。我们知道是什么时候加载的。原创 2024-11-01 00:30:00 · 157 阅读 · 0 评论 -
【Spring】Spring的Bean是线程安全的吗?创建Bean过程是线程安全的吗?
Spring的Bean的线程安全性取决于如何配置和使用它们。默认情况下,Spring的Bean是单例的,这意味着Spring容器会为每个Bean定义创建一个实例,并在整个应用程序中重用该实例。这种情况下,如果一个Bean类没有被设计成线程安全的,那么它可能不是线程安全的。如果在多线程环境中使用Spring的单例Bean,并且Bean类本身没有实现线程安全的机制(例如使用同步或锁),那么可能会导致并发问题。多个线程同时访问和修改同一个Bean实例的成员变量可能会导致数据竞争和不正确的结果。总而言之,原创 2024-11-01 00:15:00 · 55 阅读 · 0 评论 -
【Spring】Spring是如何帮助我们在并发下避免获取不完整的Bean?
假设有2个线程,第一个线程刚刚来的时候,然后从1级缓存中获取Bean没有获取到,然后从二级也没有,然后三级也没有,此时他自己创建,然后放到三级缓存,正打算做属性赋值的时候,线程2来了,然后在三级缓存中获取了实例,然后属性还没赋值就拿去用了,这样就会报错。假设我们线程A来创建BeanA,线程B来创建BeanB,线程C来创建BeanD,而且一级缓存中已经有了BeanC,此时线程A先来的,就会锁住一直到线程A创建BeanA完成,但是同时线程B来创建BeanB,线程C来创建BeanD都是阻塞的了。原创 2024-10-31 00:30:00 · 54 阅读 · 0 评论 -
【Spring】Spring 实例化前后干预接口 InstantiationAwareBeanPostProcessor
InstantiationAwareBeanPostProcessor接口是Spring框架中的一个扩展接口,用于在Bean实例化过程中进行自定义处理。该接口定义了多个回调方法,可以在Bean实例化的不同阶段进行干预和定制。它的主要作用是在Bean实例化过程中提供额外的扩展点,允许开发者在Bean实例化前后执行特定的逻辑。原创 2024-10-31 00:15:00 · 64 阅读 · 0 评论 -
【Spring】Spring的Controller为什么会被CGLB代理
启用了AOP功能:如果在应用程序中使用了Spring的AOP功能,并且配置了基于接口的JDK动态代理来管理代理对象,则所有的代理(包括控制器)都将使用JDK动态代理而不是CGLIB代理。因此,如果您的Controller类没有实现任何接口,并且您使用了Spring的默认配置,则应该会使用CGLIB代理。Spring框架在创建控制器类的代理时,会选择代理方式,其中包括使用CGLIB代理或者基于接口的JDK动态代理。今天调试Spring项目,发现公司的项目,Spring的Controller会被CGLB代理。原创 2024-10-30 00:30:00 · 383 阅读 · 1 评论 -
【Spring】Spring boot 读取配置文件的原理是什么?
我们知道了我们是发布了ApplicationEnvironmentPreparedEvent事件,那么需要知道哪些监听器监听了这个事件,调试发现有如下监听器。Spring boot在启动的时候会发布一个事件,然后由相关的事件监听器,监听这个事件,然后去解析文件。发布的事件是ApplicationEnvironmentPreparedEvent事件。然后会调用所有的SpringApplicationRunListener发布事件。上面发布了事件,然后事件的监听使用在。方法,然后在这个方法里面调用。原创 2024-10-30 00:15:00 · 453 阅读 · 0 评论 -
【Spring】Spring 外置 tomcat 启动原理
在createRootApplicationContext方法里面就会调用configura方法。这里正常内置tomcat启动的时候,就会调用SpringBootServletInitializer的onStartup方法。我们知道了Spring启动内置tomcat原理,在这个文章中,我们来看看Spring 外置 tomcat 启动原理。这个类启动的时候会把感兴趣的类WebApplicationInitializer的实现类传入onStartup方法。我们重写的如下,然后上面再调用就是调用我们重写的方法。原创 2024-10-29 00:15:00 · 43 阅读 · 0 评论 -
【Spring】SpringBoot内置Tomcat启动原理
因此,EmbeddedTomcat 配置类在满足条件的情况下,会自动配置一个嵌入式的 Tomcat 服务器,用于处理 Servlet 相关的请求和协议升级。然后就创建了TomcatServletWebServerFactory这个bean,然后返回给我们了,然后就调用了getWebServer方法,然后就与我们上面的图对应了。在getWebServer方法里面就有创建tomcat的逻辑,并且启动tomcat。一般我们的项目是不引入其他类的,比如jetty,然后这些就会飘红,然后就不会走jetty.原创 2024-10-28 00:30:00 · 262 阅读 · 0 评论 -
【Spring】Spring的注解@ConditionalOnClass 这个是怎么实现的?
Class原创 2024-10-28 00:15:00 · 143 阅读 · 0 评论 -
【Spring】优化Spring 启动时间和占用资源
本章接着上一章节继续讲解,本章也是优化Spring 启动时间和占用资源。原创 2024-10-22 00:15:00 · 483 阅读 · 0 评论 -
【Spring】Spring @Contended注解有什么用?
在现代CPU中为了提高CPU的利用率,在CPU层面设计了L1/L2/L3三级缓存,缓存以缓存行为单位,进行数据的读取和写入。每个缓存行的大小通常是64个字节,由于多核处理器的多个核心 ,在并行执行任务的时候,允许同时读取同一个数据缓存到缓存行中,那么就存在一个潜在的问题。假设存在xy 2个变量,CPU1本来想读取x变量,但是因为缓存行的存在,他会读取到y变量,然后cpu2同理,一个cpu修改了数据并不会对另外一个cpu进行通知。原创 2024-10-19 00:30:00 · 76 阅读 · 0 评论 -
【Spring】Spring DeferredLogFactory 延迟创建日志记录器
在做里面的实验的时候遇到这个问题。在里面我们先解决了问题:然后发现日志也是一直没有。经过一番查询,如果发现程序中日志没有输出,检查是否使用了slf4j输出日志,此时因为日志系统未初始化无法输出日志。原创 2024-09-30 15:52:43 · 110 阅读 · 0 评论 -
【Spring】扩展点EnvironmentPostProcessor实例详解
之前项目中用到了Apollo配置中心,对接Apollo配置中心后,配置中心的属性就可以在程序中使用了,那么这个是怎么实现的呢?配置中心的属性又是何时加载到程序中的呢?那么我们如果找到了这个是怎么实现的是否就可以 从任何地方加载配置属性、配置属性的加解密功能呢?原创 2024-09-28 10:08:41 · 354 阅读 · 0 评论 -
【Spring】PropertySource named ‘application-dev.properties‘ does not exist
然后我们去看看相关的equals方法,MapPropertySource的equals方法和hash方法是在父类的PropertySource里面,方法内容如下。所以最终调用的是CopyOnWriteArrayList的indexOf方法去获取值,然后最终调用的是PropertySource的equals方法。MapPropertySource的equals方法和hash方法是在父类的PropertySource里面,方法内容如下。然后突然怀疑是不是我的Order设置的太高了,我的设置如下。原创 2024-09-28 10:08:23 · 190 阅读 · 0 评论 -
【Spring】SpringBoot手写模拟Spring boot
本章主要讲解SpringBoot手写模拟Spring boot,在此之前我们先了解一下怎么创建SpringMVC。原创 2024-09-27 08:59:41 · 195 阅读 · 0 评论 -
【Spring】Spring的AnnotationConfigApplicationContext类讲解、单测一个Service
Spring 启动流程来讲,之前所分析的都是基于类的实现进行的处理的,对于 Spring6.x 来讲最为核心的部分是通过注解的方式来进行配置。Spring 6.0.0 提了一个非常完美的概念,就是彻底废除掉 XML 的配置方式,后来发现完全去掉后,有些地方不好,所以后来的更新版本里面又逐步的恢复了原始的配置方式,如果考虑到后续因为要与 SpringBoot 进行对接环节,本次的内容还是要尽量以注解的方式进行。原创 2024-09-27 08:59:18 · 177 阅读 · 0 评论 -
【Spring】Spring的依赖注入为什么不支持static属性
在Spring框架中,依赖注入(Dependency Injection,DI)主要是通过将依赖对象作为实例变量注入到目标对象中实现的。这种方式对于实例特定的属性非常有效,但是并不适用于static属性。static属性是属于类本身的,而不是类的实例。它们在整个应用程序中只有一个实例,与特定的对象实例无关。由于依赖注入是基于对象实例级别的,而不是类级别的,所以Spring的依赖注入机制不直接支持注入到static属性中。此外,static属性的生命周期与对象实例不同。原创 2024-09-21 00:30:00 · 129 阅读 · 0 评论 -
【Spring】Spring Boot No active profile set, falling back to default profiles: default
我们一个经常运行的Spring Boot项目,今天突然报错因为我们这个项目以前一直运行,所以没有怀疑是包的问题,怀疑是缓存导致的。因此我清理缓存,或者重启IDEA都不行,然后到处搜索,发现都不是我的问题。大部分人都说是加入下依赖原创 2024-09-21 00:15:00 · 792 阅读 · 0 评论 -
【Spring】如何对SpringBoot接口返回数据进行脱敏
本章主要讲解如何对SpringBoot接口返回数据进行脱敏,这里我们使用糊涂工具包来做。这里我们主要使用注解来做这个事情,显得更加高级一点,嘿嘿嘿。原创 2024-09-19 00:30:00 · 111 阅读 · 0 评论 -
【Spring】如何理解SpringBoot中关于请求、连接的几个参数?
我们本章节主要讲解SpringBoot中关于请求、连接的几个参数,参数如下。原创 2024-09-19 00:15:00 · 181 阅读 · 0 评论 -
【Spring】Spring如何控制bean的初始化顺序
我们有些情况下需要控制Spring的初始化顺序,比如第一个Bean依赖第二个Bean,此时我们就需要控制Spring Bean的初始化顺序。极端情况下,我们的bean依赖顺序可能如下这时候我们该怎么做呢?原创 2024-09-18 00:30:00 · 323 阅读 · 0 评论 -
【Spring】Spring的jar为什么可以直接运行
还记得我们以前怎么运行起来一个web的包吗?我们以前是把包打成一个war包,然后去运行。还记得我们有时候会遇到的错误吗?为什么我们根据这个里面的加了一个插件就可以运行了呢?这个插件为我们做了什么呢?其实我们加了插件已经,Spring Boot应用打包之后,生成一个Fat jardar包中包含jar),包含了应用依赖的jar包和Spring Boot loader相关的类。我们可以解压一个试试,可以看到里面包含了依赖的包。原创 2024-09-15 00:30:00 · 219 阅读 · 0 评论 -
【Spring】Spring中@Component和@Bean的区别?
总的来说,@Component注解适用于声明普通组件,并通过自动装配进行依赖注入;而@Bean注解适用于在配置类中声明复杂的Bean,并提供更细粒度的配置和灵活性。在实际使用中,根据需求和场景选择合适的注解来声明和配置Spring组件。在Spring框架中,@Component和@Bean是两个常用的注解,用于实现组件的声明和配置。原创 2024-09-14 00:30:00 · 215 阅读 · 0 评论 -
【Spring】为什么有些公司禁止使用@Transactional声明式事务?
如果一个方法中存在较多耗时的操作,很容易引发长事务的问题,长事务会带来锁的竞争和性能的消耗,同时也会导致数据库连接池耗尽,影响程序的正常执行。嵌套调用混乱:如果方法存在嵌套调用,子方法也加了@Transactional声明式事务,这时候就出现了事务嵌套的行为,。@Transactional声明式事务是将事务控制逻辑放在注解里面,如果项目中的复杂度增加,事务的控制可能变的更加复杂。导致代码的可读性和维护性下降。原创 2024-09-14 00:15:00 · 205 阅读 · 0 评论 -
【Spring】Spring中有哪些方式能把Bean注入IOC容器中
使用第三方库扩展方式:Spring 支持使用第三方库,如 MyBatis、Hibernate 等,通过配置适配器或相关设置,将这些第三方库所创建的对象注入到 IOC 容器中。注解,指定要自动扫描的包路径,Spring 将自动扫描该包及其子包下的所有带有特定注解的类,并将其注册为 Bean。注解的类,通过 @Bean 注解定义 Bean,同时在配置类中使用。Java 配置方式:使用基于 Java 的配置类,如使用。注解方式:通过在 Bean 类上使用注解,如。自动扫描方式:通过在配置类上使用。原创 2024-09-13 00:15:00 · 219 阅读 · 0 评论 -
【Spring3】Spring boot 3新特性介绍
11月24号,Spring Boot 3.0 发布了第一个正式的GA 版本。截止目前Sprina Boot 3.1 GA也已更新,一起看看新版本到底有哪此变化Spring boot 3 默认引用的是 Spring 6 版本。Spring Boot 3.0 使用Java 17作为最低版本,如果你目前使用的是Java 8或 Java 11,那么需要升级先升级 JDK,并且新版本已通过 JDK 19 进行了测试。原创 2024-08-05 00:15:00 · 526 阅读 · 0 评论 -
【IDEA】SpringBoot使用EasyYapi对代码实现API接口一键发布到YApi
EasyYapi是什么?官网的介绍。EasyYapi是一款Idea插件,帮你导出API到YApi、postman、markdown。EasyYapi特色EasyYapi优势(1)基于javadoc&KDoc&ScalaDoc解析API文档(2)你可以在保持代码零侵入的情况下得到相当完整的api文档, 但是特殊的需求还是需要部分特殊的注释/注解配合(3)与之相对的是, 你可以灵活的运用配置规则来适应你的项目特性以减少代码侵入.原创 2024-08-02 00:30:00 · 795 阅读 · 0 评论 -
【Spring】SpringBoot项目启动时间从7分钟降到了40秒!
转载这篇文章是因为,我恰巧也在做这个优化,我的程序原本启动时间也是5分钟以上,然后优化后速度降低到30秒启动成功。先看看别人怎么做的。原创 2024-08-01 00:30:00 · 238 阅读 · 0 评论 -
【Spring】Spring 多线程事务怎么回滚、可以使用 @Transactional吗?
1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。2,在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。3,下面用一个简单示例演示多线程事务。原创 2024-07-30 00:30:00 · 255 阅读 · 1 评论 -
【Spring】常见 Bean 映射框架概览
在我们实际项目开发过程中,我们经常需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息,比如DTO数据传输对象和数据对象DO,我们需要将DO对象进行属性复制到DTO,但是对象格式又不一样,所以我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型。在Java中,除了基本数据类型之外,还存在类的实例对象。原创 2024-07-28 00:30:00 · 187 阅读 · 0 评论 -
【Spring】AopConfigException Unexpected AOP exception Unable to load cache item
今天想做一个MyIbatis plugs相关的项目,然后运行报错详情报错信息如下我的maven配置如下首先定义了一个实体类如下然后定义了service然后定义了实现类然后定义一个mapper然后定义了这个xml查询然后定义了配置加载最后主类如下。原创 2024-07-27 00:15:00 · 333 阅读 · 0 评论 -
【Spring】Spring 自定义 Validator 注解实现数据校验
本章节主要想使用注解失效Validator数据校验。原创 2024-07-17 00:30:00 · 309 阅读 · 0 评论 -
【Spring】Spring Boot 集成 Zookeeper 结合AOP实现分布式锁
此 demo 主要演示了如何使用 Spring Boot 集成 Zookeeper 结合AOP实现分布式锁。原创 2024-07-16 00:15:00 · 231 阅读 · 0 评论