在Spring的学习过程中,总是学的越多,不懂的越多.本来只是想将ApplicationContext的相关内容全部梳理一遍,结果发现涉及的东西越来越多,比如上篇文章中的ResolvableType,到这篇文章介绍的ObjectFactory跟ObjectProvider.不过想想也没办法,一步一步往前走呗,在这个过程中也确实学到了很多东西.废话不多说,直接进入正文. ObjectFactory 接口定义 // 一个对象工厂 public interface ObjectFactory<T>…
接口定义 用于推断一个特定的beanDefinition是否能作为指定依赖的候选者的策略接口 public interface AutowireCandidateResolver { // 默认情况下直接根据bd中的定义返回,如果没有进行特殊配置的话为true default boolean isAutowireCandidate(BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor) { return bdHolder.g…
关于泛型的基本知识在本文中不会过多提及,本文主要解决的是如何处理泛型,以及java中Type接口下对泛型的一套处理机制,进而分析Spring中的ResolvableType. 文章目录 Type 简介 接口定义 UML类图 ParameterizedType 简介 接口定义 使用示例 TypeVariable 简介 接口定义 使用示例 GenericArrayType 简介 接口定义 使用示例 WildcardType 简介 接口定义 使用示例 ResolvableType 概览 方法分析 fo…
前言 之所以写这么一篇文章是因为在Spring中,经常会出现下面这种代码 // 判断是否是桥接方法,如果是的话就返回这个方法 BridgeMethodResolver.findBridgedMethod(specificMethod): 这些代码对我之前也造成了不小疑惑,在彻底弄懂后通过本文分享出来,也能减少大家在阅读代码过程中的障碍! 桥接方法 什么时候会出现桥接方法? 第一种情况:方法重写的时候子父类方法返回值不一致导致 public class Parent { public Number…
本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 谈谈Spring中的对象跟Bean,你知道Spring怎么创建对象的吗? 推荐阅读: Spring官网阅读 | 总结篇 Spring杂谈 本系列文章将会带你一行行的将Spring的源码吃透,推荐阅读的文章是阅读源码的基础! 前言 在前面的文章中已经知道了Spring是如何将一个对象创建出来的,那么紧接着,Spring就需要将这个对象变成一个真正的Bean了,…
文章目录 BeanFactory 接口定义 继承关系 接口功能 1.HierarchicalBeanFactory 2.ListableBeanFactory 3.AutowireCapableBeanFactory 4.ConfigurableBeanFactory 5.ConfigurableListableBeanFactory 6.AbstractBeanFactory 7.AbstractAutowireCapableBeanFactory 8.DefaultListableBeanF…
本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 推荐阅读: Spring官网阅读 | 总结篇 Spring杂谈 本系列文章将会带你一行行的将Spring的源码吃透,推荐阅读的文章是阅读源码的基础! 两个问题 在开始探讨源码前,我们先思考两个问题: 1.在Spring中,什么是Bean?跟对象有什么区别? 通过new关键字,反射,克隆等手段创建出来的就是对象.在Spring中,Bean一定是一个对象,但是对…
本系列文章: 听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 谈谈Spring中的对象跟Bean,你知道Spring怎么创建对象的吗? 这篇文章,我们来谈一谈Spring中的属性注入 Spring中AOP相关的API及源码解析,原来AOP是这样子的 你知道Spring是怎么将AOP应用到Bean的生命周期中的吗? 推荐阅读: Spring官…
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1.14.RELEASE 目录 1. 什么是 Spring Framework ? 2. Spring Framework 的优势和不足? 3. 你对 IoC 的理解? 4. 为什么需要 IoC ? 5. IoC 和 DI 的区别? 6. IoC 容器的职责? 7. 什么是 Spring IoC 容器?…
前言 上一篇文章已经学习了[IoC的主要实现策略]有2种: 1.依赖查找 2.依赖注入 这里稍加详细的介绍一下依赖查找 1.依赖查找的方式 依赖查找的方式可以以多种维度来划分: 1.按名称/类型/注解查找 2.按单一类型/集合类型/层次性依赖查找 3.延迟查找.实时查找 1.1维度一 1.1.1根据 Bean 名称查找 实时 private static void lookupInRealTime(BeanFactory beanFactory) { User user = (User) bea…