把indexService放入正在创建的对象缓存(singletonFactories)中
创建indexservice对象
(执行populateBean方法)
注入userService
去三级缓存中获取,获取不到
去spring容器中getBean 获取不到
开始创建userServcie对象
把userServcie放入正在创建的对象缓存中
创建userService对象
注入indexServcie
去三级缓存中获取,可以哦或取到,注入成功,创建userServcie bean 成功
注入userService成功
创建indexService对象成功
allowCircularReferences=false 关闭循环依赖
spring 装配模型no、bytype、byname、constructor
BeanFactoryPostProcessor 创建springbean之前,put map之后
BeanDefinitionRegistryPostProcessor 扫描和put map过程中
AnnotatedBeanDefinitionReader的作用1、主要是可以动态、显示的注册一个bean;2、而且具备解析一个类的功能;和扫描解析一个类的功能相同;AnnotatedBeanDefinitionReader的应用场景1、可以显示、动态注册一个程序员提供的bean;2、在初始化spring容器的过程中他完成了对配置类的注册和解析功能;
resolvableDependencies 放入了ApplicationContext等4个对象可以直接用@AutoWired注入
applyBeanPostProcessorsAfterInitialization aop
@PostConstruct
Aware实现了BeanPostProcessors接口
@AutoWired AutowiredAnnotationBeanPostProcessor 推荐,可以支持更多公能 spring的
@Resource CommonAnnotationBeanPostProcessor 不支持@Primary等 java标准
1.Ioc 底层的实现机制? 反射
2.spring 怎样扩展?spring再实例化之前(BeanFactoryPostProcessor),初始化时(BeanPostProcessor),监听器事件 三种扩展方式
3.spring 核心:通过反射创建对象,操作对象
4.FactoryBean接口 用作扩展,创建独特的bean, 如springcloud feign 就是用它