Spring源码
CodeVulDiscoverer
争取每日一篇
展开
-
【Spring源码】createBeanInstance()
目录创建实例-createBeanInstance有参构造-autowireConstructor无参构造-instantiateBean实例化策略-instantiatecreateBeanInstance英文版autowireConstructor英文版instantiateBean英文版instantiate英文版位置 protected Object doCreateBean(String beanName, RootBeanDefinition mbd, @Nullable Object原创 2022-01-06 21:36:16 · 414 阅读 · 0 评论 -
【Spring源码】doCreateBean()
目录简易版中文注释版英文版简易版 protected Object doCreateBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) { // 实例化bean BeanWrapper instanceWrapper = createBeanInstance(beanName, mbd, args); // 属性填充 populateBean(beanNam原创 2022-01-05 21:25:46 · 377 阅读 · 0 评论 -
【Spring源码】createBean()
目录1、resolveBeanClass()2、prepareMethodOverrides()3、resolveBeforeInstantiation()1)applyBeanPostProcessorsBeforeInstantiation()2)applyBeanPostProcessorsAfterInitialization() protected Object createBean(String beanName, RootBeanDefinition mbd, @Nullable Ob原创 2022-01-03 21:16:21 · 367 阅读 · 0 评论 -
【Spring源码】BeanPostProcessor
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory八次调用时机1、是否需要代理resolveBeforeInstantiationInstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation2、推断构造函数determineConstructorsFromBeanPostProcessorsSmartInstantiati原创 2021-04-17 16:16:04 · 53 阅读 · 0 评论 -
【Spring源码】循环依赖(循环引用)
一、仅支持单例,非构造方法注入二、有个建模的类,叫BeanDefinition,由BeanDefinition构建产生Bean三、容器启动、扫描、变成BeanDefinition,存到BeanDefinitionMap中,遍历、验证、是否:单例、原型、抽象、懒加载、有DepensOn、factoryBean创建之前先去单例池当中是否存在有没有被创建,有就去二级缓存,有没有被提前暴露,没暴露Bean就开始创建首先通过推断构造方法得到最佳的构造方法,通过反射实例化一个Java对象,根据对象初始化Be原创 2021-04-17 16:15:19 · 68 阅读 · 0 评论 -
【Spring源码】Spring流程
1、初始化AnnotationBeanDefinitionReader2、初始化ClassPathBeanDefinitionScanner3、执行register(),注册配置类4、执行refresh(),先初始化比如BeanFactory这类基础的容器5、执行invokeBeanFactoryPostProcessors(),主要扫描包和parse (类—>beanDefinition)6、注册beanPostProcessor,国际化等等7、将BD变成bean的方法 finishBe原创 2021-04-17 16:14:14 · 77 阅读 · 0 评论