暂时未有相关云产品技术能力~
一个脑结构抽象、脑栈容量小的程序员。
【6月更文挑战第15天】CSRF 是指跨站请求伪造,是 Cross-site request forgery 的简称,有些地方也简写为 XSRF。
【6月更文挑战第14天】在 Spring Security 中,提供了一个 `HttpFirewall` 接口,从它的名字可以看出是作为防火墙使用。
【6月更文挑战第13天】
【6月更文挑战第11天】最近由于一些原因,服务器经常会重启,每次重启后需要手动启动 Spring Boot 的工程,因此我需要将其配置成开启自启动的服务。
【6月更文挑战第10天】栈是每一个程序员都很熟悉的数据结构,英文叫做 Stack,在 Java 中,栈的实现类是 java.util.Stack。如果你了解 Java 中的 Stack 类,就会知道,这里有一个历史遗留问题。
【1月更文挑战第19天】在引入 Spring Security OAuth 的 starter 后,可以方便地使用注解,自动开启和配置授权服务组件。它是如何完成这些配置的?
【1月更文挑战第16天】上一篇[Spring Security OAuth 认证流程浅析:密码模式],简单分析了密码模式授权流程的源码,这篇来试着分析 OAuth 中最具代表性的授权码模式。
【1月更文挑战第14天】这篇文章的内容基于对Spring Security 认证流程的理解,介绍如何在SpringSecurity中自定义认证逻辑(如验证码登录)
【1月更文挑战第15天】从 Spring Security OAuth 源码分析其实现原理。这篇我们先分析最常用也相对简单的密码模式。
【1月更文挑战第11天】Spring 6 带来了一个新的特性——HTTP Interface。这个新特性,可以让开发者将 HTTP 服务,定义成一个包含特定注解标记的方法的 Java 接口,然后通过对接口方法的调用,完成 HTTP 请求。
【1月更文挑战第5天】本文分析了 Spring AOP 拦截器链中的一个特殊拦截器 ExposeInvocationInterceptor 的注册的时机以及它的作用。至此,基于 JDK 的 AOP 代理拦截器链执行的逻辑就分析完了。
本文主要分析了 InstantiationModelAwarePointcutAdvisorImpl 的getAdvice方法,如何从 Advisor 中获取 Advice 对象的过程。
本文分析了如何从代理对象的 Advisor 列表中,获取到与当前被调用的目标方法匹配的拦截器链,其中涉及到了 PointcutAdvisor 和 IntroductionAdvisor 类型的 Advisor 的处理,以及切点与类和方法的匹配。
本文分析了 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 通过findEligibleAdvisors查找与目标类匹配的 Advisor 的原理。
本文分析了 Spring 查找注解配置的 AOP 切面信息的最后一部分,Spring 会将查找到的所有增强类中的方法进行筛选,找到所有的增强方法,并将其封装成对应的 Advisor。
本文分析了在获取到基于注解的切面配置类之后,如何从中找到配置增强逻辑的方法,找到后,Spring 会为每一个增强逻辑创建一个 Advisor。
本文分析了用于创建 AOP 代理的后处理器是如何查找基于注解配置的切面信息的,这是前半部分,主要包含切面配置类的查找和解析。
本文分析了 XML 配置的切面信息是如何被 Spring 加载到,以及 Spring 的后处理器是如何在创建 AOP 代理之前将所有增强器的信息 Advisor 找到的。
本文分析了 Spring 创建 AOP 代理的重要方法wrapIfNecessary以及它为 Bean 对象创建代理对象的主要流程。
本文分析了用于创建 AOP 代理对象的后处理器,主要是 AbstractAutoProxyCreator 类中的后处理方法。
本文分析了 Spring 通过 XML 配置开启 AOP 特性支持的原理,包括对注解配置切面的支持和直接在 XML 文件中配置切面的支持。
本文分析了通过@EnableAspectJAutoProxy注解开启 Spring AOP 支持的原理。
Spring AOP 是 Spring 框架的重要特性之一。本文介绍了一些 Spring AOP 相关的基础概念和原理,适合初学者阅读。
本文介绍了 InitDestroyAnnotationBeanPostProcessor 后处理器对`@PostConstruct`和`@PreDestroy`注解方法的解析和处理原理。
本文分析了 CommonAnnotationBeanPostProcessor 后处理器处理`@Resource`等注解的解析和注入的原理。
本文介绍了 CommonAnnotationBeanPostProcessor 后处理器的作用、它主要实现的后处理方法,还顺便介绍了 JSR 和 JSR-250 是什么。
本文介绍了自动装配注解后处理器中的 postProcessMergedBeanDefinition 方法解析 BeanDefinition 中添加了注入注解的属性和方法。
本文分析了 Spring 在后处理器中,对配置类进行增强处理的前半部分流程,也就是如何从容器中找到需要进行增强处理的配置类的 BeanDefinition。
本文介绍了处理配置类的过程的第一部分,即从所有的 BeanDefinition 中筛选出符合候选条件的配置类对应的 BeanDefinition,以及对这些配置类信息进行解析和处理前的准备工作。
本文梳理了配置类的配置信息,是由其对应的 BeanFactory 后处理器负责执行的,这个后处理器在上下文创建时被注册到容器中,当容器的预处理完成后会执行其中的后处理方法。
本文通过 Spring 框架源码,分析了 @Component 及其相关的几个注解的作用和 Spring 筛选包含这些注解的类型的方法。
本文分析了 Spring 组件扫描的最后一部分内容,也就是 BeanDefinition 的后处理和注册。
本文介绍了 Spring 基于注解初始化上下文的关键步骤doScan方法的原理的第一部分,即从给定的包路径中查找符合条件的类并封装成对应的 BeanDefinition。
本文总结了 Spring 容器 getBean 方法获取单例 Bean 实例的原理。更细节的分析,可以看我之前的文章。
一篇文章总结 Spring 基于 XML 配置文件初始化上下文的过程,包含十余张详细流程图,欢迎点赞收藏转发!
本文通过阅读源码分析了 Spring 初始化 Bean 实例过程中执行 Bean 初始化方法的过程。
本文分析了从 Spring 创建完早期 Bean 实例,到完成属性注入的过程。其中包括了将早期实例添加到三级缓存和属性自动装配的过程。
本文分析了 Spring 创建单例 Bean 实例的过程,通过这部分分析,可以了解到 Spring 在创建实例之前还会执行那些工作。
本文介绍了 Spring 实例化 Bean 的过程中,一个重要的方法 getObjectForBeanInstance 的作用和具体原理。
本文分析了 Spring 容器从缓存中获取单例 Bean 的原理,主要涉及到了 Spring 为解决循环依赖问题,而设计的三级缓存机制。
上一篇粗略分析了 AbstractBeanFactory 中`doGetBean`方法的整体流程,这篇开始深入分析每个环节的源码和原理。