![](https://img-blog.csdnimg.cn/2c399978272e4399ac8fbf3beff90dd9.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring
文章平均质量分 96
从源码角度下拆解出来强大的 Spring 容器组件为我们作了哪些重要以及巨大改变的事情
vnjohn
vnjohn,博主名字的简写,是一名专注于后端领域的程序猿,借用歌名“自己”里的歌词来时刻提醒自己要不断学习,不断思而前行:“第一要保持希望在每天清晨太阳升起,第二切记不要与自身的平凡为敌,第三与自己所处的现在促膝长谈”
展开
-
简述 Spring Session 集成 Redis 底层实现及自定义扩展配置
该篇博文介绍了 Spring Session 集成 Redis 缓存,它是如何自动装配进来的 > 核心类:CacheOperationSource、CacheInterceptor,后面我们自我实现了 Redis 序列化策略、Key 生成策略、自定义缓存管理器,用于对我们的业务作扩展工作,简单介绍了 Redis 核心的一些参数配置,最后,基于自定义扩展配置结合实战简单的使用 @Cacheable、@CacheEvict、@CachePut原创 2023-06-06 00:52:16 · 2887 阅读 · 11 评论 -
Spring 填充属性和初始化流程源码剖析及扩展实现
博主在此篇文讲解完了生命周期剩下的部分:填充属性、初始化 Bean,前期是填充属性阶段需要作的准备工作,提前解析好 `@Resource、@Autowired、@PostConstruct 注解`的元数据,并对 BeanDefinition 作了最后一次的合并属性工作;在填充属性实际干活时用到了 @Resource、@Autowired 元数据信息,简单对比了它们之间的注入复杂性;最后部分讲解了初始化 Bean 详细的过程,主要分析的是它们的执行顺序,防止在实际工作中因为各种扩展实现造成混浊原创 2023-05-02 14:30:14 · 2931 阅读 · 10 评论 -
讲解 Spring 实例化的不同方式及相关生命周期源码剖析
该篇博文,先介绍了 BeanDefinition 接口以及与它子类之间的关系,主要分析的是在 Spring 中不同的实例化方式,如:FactoryBean、FactoryMethod、Supplier、自定义 BPP 接口实现类、反射注入,反射注入是 Spring 中比较核心的,它一般可以通过无参构造、有参构造去注入 Bean 实例;最后,MethodOverrides 此属性虽然在工作中很少应用,但我们应该要知道此【单例 Bean 引用原型 Bean 问题】问题的解决方案,希望博文能够帮助你快速的理解原创 2023-04-24 11:41:25 · 2442 阅读 · 5 评论 -
Spring 核心类 ConfigurationClassPostProcessor 流程讲解及源码全面分析
该篇文章介绍了 Spring 核心类 ConfigurationClassPostProcessor 一些重要的方法,方法相关的源码也分析完毕,其中涉及到注解的解析,其实只要搞懂了 `processConfigBeanDefinitions` 方法里面的功能,自动装配的实现理解基本是就可以拿下了;同时,里面有针对性对每个 @Configuration 标注的配置类作了额外处理,是否进行了动态代理增强,来确保被 @Configuration 注解修饰的类下所有 @Bean 方法是否保持单例原创 2023-02-07 01:40:00 · 2703 阅读 · 3 评论 -
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(二)
注册自定义的 BeanPostProcessor 扩展类,基于消息源如何实现国际化处理的实例Bean,初始化应用事件多路广播器应用它来发布应用内事件, 提前注入一些 Spring 内部的监听器;最后,完成所有单例 Bean 初始化入口是在哪里触发的,同时在初始化这些单例时需要的一些提前准备工作,比如:数据类型转换、值织入的方式(运行期织入、编译期织入)原创 2023-02-05 03:37:28 · 2286 阅读 · 0 评论 -
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(一)
refresh(prepareRefresh、obtainFreshBeanFactory、prepareBeanFactory、postProcessBeanFactory、invokeBeanFactoryPostProcessors)核心方法分析,文章内容有点长,可以分目录节点进行阅读,比较想深入理解的方法可以点击文章目录入口.原创 2023-02-04 04:35:58 · 2770 阅读 · 0 评论 -
SpringMVC 如何实现异步处理及内置异步请求类介绍
在 SpringMvc 中为了方便使用异步请求专门提供了以下几种类型:在 SpringMvc 中,对异步请求的处理中提供了四个地方的支持:1、FrameworkServlet 中给当前请求的 WebAsyncManager 添加了 CallableProcessingInterceptor 类型的拦截器->RequestBindingInterceptor,目的是为了在请求处理前将当前请求的 LocaleContext 和 ServletRequestAttributes 设置到 LocaleContext原创 2022-07-25 22:30:00 · 3285 阅读 · 0 评论 -
Spring AOP 执行流程及源码分析
CGLIB 和 JDK 动态代理实现,区别是 CGLIB 是采用继承类的方式实现,如果方法中为 final 或 static 将不会被代理增强,生成的代理类会比较多;而 JDK 是采用实现接口的方式;如果它包含的接口中有存在 equals 或 hashCode 方法时将不会被代理增强,生成的代理类只有一个;它们的底层实现都是通过 ASM 字节码框架操作的.两者在处理整个流程时,都是先将所有的 advisor 进行匹配,然后再将需要进行增强的 advisor 拦截器找到并组装起来原创 2022-07-25 18:04:44 · 2614 阅读 · 0 评论 -
初步走入 Spring 事务底层核心前置源码
@Bean 配合 @Configuration 注解一起使用的话,@Bean 标注的 bean 在每次进行调用时都会是单例的对象,因为在执行 BFPP 方法时对所有的 @Configuration 类都生成了 CGLIB 代理子类,并且为其设置了两个相关的 Callback 回调拦截器:BeanFactoryAwareMethodInterceptor、BeanMethodInterceptor原创 2022-07-27 15:16:07 · 2174 阅读 · 0 评论 -
SpringBoot 自动装配流程以及核心源码剖析
Spring Framework 一直在致力于解决一个问题,就是如何让 bean 管理变得更简单,如何让开发者尽可能的少关注一些基础化的 bean 配置,从而实现自动装配。所谓的自动装配,实际上就是如何自动将 bean 装载到 Ioc 容器中来实际上在 spring 3.x 版本中,Enable 模块驱动注解的出现,已经有了一定的自动装配的雏形,而真正能够实现这一机制,还是在 spirng 4.x 版本中,conditional 条件注解的出现;原创 2022-08-03 23:22:07 · 3660 阅读 · 0 评论 -
Spring 观察者模式详解以及自定义监听器扩展实现
在 Spring 运用中,观察者模式运用的场景很多,只不过在 Spring 内部为观察者模式定义为了抽象,使用多路广播器方式将观察者、被观察者、行为抽象了事件、监听器、事件源等名,下面对该内容进行详细分析通过几个不同类型自定义事件案例来加深对事件驱动机制的理解若我们想要通过自定义的监听器来监听自定义的事件呢?首先创建自定义的事件类,非常简单,只需要继承 ApplicationEvent 即可} }然后在自定义的监听器中监听自定义的事件原创 2022-07-29 17:09:44 · 3785 阅读 · 0 评论 -
解析 SpringMVC 父子容器及九大内置组件加载过程
Spring、Spring MVC 容器加载过程以及 MultipartResolver、LocaleResolver、ThemeResolver、HandlerMapping、HandlerAdapter、HandlerExceptionResolver、RequestToViewNameTranslator、ViewResolver、FlashMapManager 九大组件加载及简要介绍原创 2022-07-25 22:00:00 · 2380 阅读 · 0 评论 -
Spring 事务传播机制、隔离级别以及事务执行流程源码结合案例分析
Spring 事务涉及到的传播特性以及隔离级别进行了详细的阐述,基于一个代码案例对所有的事务场景都进行了演示,并对其进行了总结,事务相关的核心类 TransactionInfo,以及正常提交、异常回滚源码分析,基于流程图图解+文字描述分析原创 2022-07-27 17:16:19 · 2871 阅读 · 4 评论 -
介绍 Spring 体系、Bean 生命周期剖析以及核心接口 BeanFactory、BeanFactoryPostProcessor、BeanPostProcessor
该篇博文,阐述了整个 Bean 生命周期简要的流程,以及面试中常用的一些面试题:实例化和初始化区别、BeanFactory 和 FactoryBean 接口区别,最后整理了一些 Spring 核心的一些接口如果觉得博文不错,关注我 vnjohn,后续会有更多实战、源码、架构干货分享!原创 2022-07-25 18:02:31 · 2343 阅读 · 0 评论 -
Spring 循环依赖问题解决方案以及简要源码流程剖析
实例化和初始化是分开处理的,当完成实例化之后就可以让其他对象引用当前对象,只不过当前对象不是一个完整对象而已,后续需要完成此对象的剩余步骤;直接获取半成品对象「实例化但未初始化」引用地址,保证对象能够能够被找到,而半成品对象在堆空间中无所谓是否有设置属性值;如果单独为了循环依赖问题,那么使用二级缓存足够解决问题;三级缓存存在的意义是为了代理,如果没有代理对象,二级缓存足以解决问题原创 2022-07-25 18:03:24 · 2720 阅读 · 0 评论 -
Spring Security+JWT+Vue 集成及权限认证
本篇简单的介绍 Vue 简单使用,主要为了测试验证与后端接口的权限功能是否能正常使用本次 Vue 之旅比较简单,只是简单的授权与权限认证、不认证(都给予对应的信息)至于全局拦截 code 后面再补上SpringBoot 后端跨域支持「由于前端与后端端口不同,会导致前后端联调时出现跨域问题」,代码补上// 1. 添加cors配置信息 CorsConfiguration config = new CorsConfiguration();原创 2022-12-12 15:06:44 · 3346 阅读 · 2 评论