扫描
Set<BeanDefinition> candidates = this.findCandidateComponents(basePackage);
创建非懒加载的单例bean
AbstractBeanFactory.getBean(beanName);
AbstractBeanFactory.doGetBean0
AbstractAutowireCapableBeanFactory.createBean0开始
1.Class<?> resolvedClass - this.resolveBeanclass(mbd, beanName, new Class[Ol);--加载Class 2. beanlnstance - this.resolveBeforelnstantiation(beanName, mbdToUse);--实例化前方法, beanlnstance = this.docreateBean(beanName, mbdToUse, args);
instanceWrapper - this.createBeanlnstance(beanName, mbd, args);--实例化方法
3.this.applyMergedBeanDefinitionPostProcessors(mbd, beanType, beanName);
4.this.populateBean(beanName, mbd, instanceWrapper);
-属性填充
5.exposedobject = .thisinitializeBean(beanName, exposedObject, mbd);--初始化
this.invokeAwareMethods(beanName, bean);(调用aware接口)
this.applyBeanPostProcessorsBeforelnitialization(bean, beanName);(初始化前方法) this.invokelnitMethods(beanName, wrappedBean, mbd);(初始化)
this.applyBeanPostProcessorsBeforelnitialization(bean, beanName);(初始化后方法)
6.this.registerDisposableBeanlfNecessary(beanName, bean,mbd);---销毁方法