暂时未有相关云产品技术能力~
一个脑结构抽象、脑栈容量小的程序员。
【1月更文挑战第19天】在引入 Spring Security OAuth 的 starter 后,可以方便地使用注解,自动开启和配置授权服务组件。它是如何完成这些配置的?
【1月更文挑战第14天】这篇文章的内容基于对Spring Security 认证流程的理解,介绍如何在SpringSecurity中自定义认证逻辑(如验证码登录)
【1月更文挑战第11天】Spring 6 带来了一个新的特性——HTTP Interface。这个新特性,可以让开发者将 HTTP 服务,定义成一个包含特定注解标记的方法的 Java 接口,然后通过对接口方法的调用,完成 HTTP 请求。
【1月更文挑战第5天】本文分析了 Spring AOP 拦截器链中的一个特殊拦截器 ExposeInvocationInterceptor 的注册的时机以及它的作用。至此,基于 JDK 的 AOP 代理拦截器链执行的逻辑就分析完了。
本文分析了 JdkDynamicAopProxy 在执行代理的回调逻辑时,如何根据目标方法找到其对应的拦截器链。
本文深入分析了 JdkDynamicAopProxy 的invoke方法的第一部分逻辑,也就是,对于哪些方法的调用,不对其进行增强,而是执行对应的特定逻辑,从中可以了解,Spring AOP 对哪些方法是默认不进行增强的。
本文分析了 JdkDynamicAopProxy 的invoke方法,invoke方法是基于 JDK 动态代理创建的 AOP 代理对象的方法处理回调逻辑,也是 Spring AOP 增强目标方法的关键逻辑。
本文分别分析了 Spring 通过 JDK 动态代理和 CGLIB 两种方式创建 AOP 代理对象的过程。至此,Spring AOP 特性中,代理对象创建的全部过程就分析完了。
本文进入createProxy方法,分析了 Spring 创建代理对象的大致过程,以及如何选择 JDK 动态代理或者 CGLIB 方式来创建代理对象。
本文分析了 Spring 创建 AOP 代理对象之前,初始化 ProxyFactory 对象的最后一部分逻辑,主要包含 Advisor 列表的构建。
本文介绍了createProxy方法中,为 ProxyFactory 工厂对象配置proxyTargetClass属性的原理,Spring 会根据后处理器的配置以及 Bean 实例实现的接口,判断是否具备通过 JDK 动态代理给 Bean 实例创建 AOP 代理的条件,并给proxyTargetClass属性配置相应的值。
本文分析了用于创建 AOP 代理的后处理器在得到当前 Bean 实例对应的所有增强逻辑之后,创建代理的第一步,也就是先创建一个 ProxyFactory 工厂对象。
本文完整总结和分析了findEligibleAdvisors方法为目标 Bean 实例查找所有适配的 Advisor 的过程。
本文分析了 Spring 查找注解配置的 AOP 切面信息的最后一部分,Spring 会将查找到的所有增强类中的方法进行筛选,找到所有的增强方法,并将其封装成对应的 Advisor。
本文分析了在获取到基于注解的切面配置类之后,如何从中找到配置增强逻辑的方法,找到后,Spring 会为每一个增强逻辑创建一个 Advisor。
本文分析了用于创建 AOP 代理的后处理器是如何查找基于注解配置的切面信息的,这是前半部分,主要包含切面配置类的查找和解析。
本文分析了 XML 配置的切面信息是如何被 Spring 加载到,以及 Spring 的后处理器是如何在创建 AOP 代理之前将所有增强器的信息 Advisor 找到的。
本文分析了用于创建 AOP 代理对象的后处理器,主要是 AbstractAutoProxyCreator 类中的后处理方法。
本文分析了 Spring 通过 XML 配置开启 AOP 特性支持的原理,包括对注解配置切面的支持和直接在 XML 文件中配置切面的支持。
本文分析了通过@EnableAspectJAutoProxy注解开启 Spring AOP 支持的原理。
Spring AOP 是 Spring 框架的重要特性之一。本文介绍了一些 Spring AOP 相关的基础概念和原理,适合初学者阅读。
本文介绍了 InitDestroyAnnotationBeanPostProcessor 后处理器对`@PostConstruct`和`@PreDestroy`注解方法的解析和处理原理。
本文分析了 CommonAnnotationBeanPostProcessor 后处理器处理`@Resource`等注解的解析和注入的原理。
本文介绍了 CommonAnnotationBeanPostProcessor 后处理器的作用、它主要实现的后处理方法,还顺便介绍了 JSR 和 JSR-250 是什么。
本文分析了 Spring 在后处理器中,对配置类进行增强处理的前半部分流程,也就是如何从容器中找到需要进行增强处理的配置类的 BeanDefinition。
本文介绍了处理配置类的过程的第一部分,即从所有的 BeanDefinition 中筛选出符合候选条件的配置类对应的 BeanDefinition,以及对这些配置类信息进行解析和处理前的准备工作。
本文梳理了配置类的配置信息,是由其对应的 BeanFactory 后处理器负责执行的,这个后处理器在上下文创建时被注册到容器中,当容器的预处理完成后会执行其中的后处理方法。
本文通过 Spring 框架源码,分析了 @Component 及其相关的几个注解的作用和 Spring 筛选包含这些注解的类型的方法。
本文介绍了 Spring 基于注解初始化上下文的关键步骤doScan方法的原理的第一部分,即从给定的包路径中查找符合条件的类并封装成对应的 BeanDefinition。
本文总结了 Spring 容器 getBean 方法获取单例 Bean 实例的原理。更细节的分析,可以看我之前的文章。
一篇文章总结 Spring 基于 XML 配置文件初始化上下文的过程,包含十余张详细流程图,欢迎点赞收藏转发!
本文分析了从 Spring 创建完早期 Bean 实例,到完成属性注入的过程。其中包括了将早期实例添加到三级缓存和属性自动装配的过程。
本文分析了 Spring 创建单例 Bean 实例的过程,通过这部分分析,可以了解到 Spring 在创建实例之前还会执行那些工作。
本文介绍了 Spring 实例化 Bean 的过程中,一个重要的方法 getObjectForBeanInstance 的作用和具体原理。
本文分析了 Spring 容器从缓存中获取单例 Bean 的原理,主要涉及到了 Spring 为解决循环依赖问题,而设计的三级缓存机制。
上一篇粗略分析了 AbstractBeanFactory 中`doGetBean`方法的整体流程,这篇开始深入分析每个环节的源码和原理。
在 Spring 框架的核心中,Bean 的创建、初始化和获取的过程非常值得研究,这篇开始以 BeanFactory 接口中的`getBean`方法为切入点,开启这部分的源码阅读和原理分析。
本文分析 Spring 上下文初始化过程中, 提前初始化非懒加载的单例 Bean 的过程。这一步算是在容器初始化是进行的创建 Bean 的预热工作。
本文分析 Spring 上下文初始化过程中, 初始化事件广播器和注册事件监听器的过程。它们是 Spring 框架提供的基于 Pub/Sub 机制的事件发布和订阅模型。
本文分析 Spring 上下文初始化过程中, MessageSource 初始化的过程。MessageSource 是 Spring 框架中,处理 i18n 的组件。
本文主要分析了 Spring 上下文初始化过程中,执行 BeanFactoryPostProcessor 的逻辑。
Spring 初始化 BeanFactory 过程中最重要的步骤之一就是加载 BeanDefinition,本文介绍 BeanDefinition 加载过程。
Spring 初始化 BeanFactory 过程中最重要的步骤之一就是加载 BeanDefinition,本文介绍 BeanDefinition 加载过程。
在 Spring 中,Aware 接口也被叫做感知接口,当一个 Bean 实现了感知接口的时候,Spring 创建 Bean 的时候,就会通过调用感知接口的方法注入相应的数据。
本篇要阅读的是 BeanFactory 初始化的部分,也就是 AbstractApplicationContext#refresh 方法中的 obtainFreshBeanFactory() 方法调用.
这篇文章探索 Spring 容器初始化过程中最重要的 refresh 方法中,初始化 Spring 上下文信息的部分。
本文主要分析了通过 ClassPathXmlApplicationContext 初始化 Spring 容器的过程。
在 Spring 的核心源码中,`Resource` 接口定义了 Spring 对底层资源访问的抽象,通过实现 Resource 接口,我们可以开发各种资源的访问能力。