spring源码分析
文章平均质量分 67
Blank_Cybill
不忘初心,方的始终
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
每天一点点,Spring执行创建bean(AbstractAutowireCapableBeanFactory#doCreateBean)
Spring 创建bean流程 AbstractAutowireCapableBeanFactory#doCreateBean 1、 判断当前bean是不是单例的,如果是单例的,先从缓存中取,如果存在直接返回(在创建之前已经由依赖注入已生成),如果不存在执行创建 if (mbd.isSingleton()) { instanceWrapper = this.factoryBeanInstanceCache.remove(beanName); } if (instanceWrapper == null)原创 2022-02-28 17:15:38 · 520 阅读 · 0 评论 -
每天一点点,Spring创建bean实例 AbstractAutowireCapableBeanFactory#createBeanInstance
Spring 执行创建bean实例逻辑AbstractAutowireCapableBeanFactory#createBeanInstance 1、确保当前类已加载 Class<?> beanClass = resolveBeanClass(mbd, beanName); 2、如果当前BeanDefinition设置的有Supplier方法,直接调用此方法生成bean对象 Supplier<?> instanceSupplier = mbd.getInstanceSupplie原创 2022-02-27 21:30:47 · 393 阅读 · 0 评论 -
每天一点点,Spring根据找到的构造方法创建bean
Spring得到构造函数之后执行实例化 1、如果是默认空参构造 1.1、当所有的候选构造函数都为null的时候,会使用空参构造 // 如果此处得到的候选构造函数为null Constructor<?>[] ctors = determineConstructorsFromBeanPostProcessors(beanClass, beanName); //if null == ctors 会执行 AbstractAutowireCapableBeanFactory#instantiateBean原创 2022-02-26 22:41:56 · 406 阅读 · 0 评论 -
每天一点点,Spring选择合适的构造方法执行创建
Spring 得到候选构造方法之后,如何选择使用哪个构造方法? ConstructorResolver#autowireConstructor 1、定义三个变量 // 最后决定使用的构造方法 Constructor<?> constructorToUse = null; // 构造函数需要使用的参数持有器 ArgumentsHolder argsHolderToUse = null; // 最后需要使用的构造方法的参数 Object[] argsToUse = null; 2、explicit原创 2022-02-25 15:50:27 · 719 阅读 · 0 评论 -
每天一点点,Spring得到当前类的候选构造方法
当Spring中 有多个构造函数的时候,是如何得到候选的构造方法 AbstractAutowireCapableBeanFactory#determineConstructorsFromBeanPostProcessors 其中主要的是 AutowiredAnnotationBeanPostProcessor 这个类 AutowiredAnnotationBeanPostProcessor#determineCandidateConstructors 得到候选的构造方法 1、找存在@Lookup注解的方法原创 2022-02-24 11:54:54 · 483 阅读 · 0 评论 -
每天一点点 ,Spring 循环依赖
每天一点点 ,Spring 循环依赖原创 2022-02-23 11:27:05 · 453 阅读 · 0 评论
分享