Spring加载流程图
解析xml-创建beandefinition-放入definitionmap中-判断是否有扩展方法有的话去执行beanfactorypostprocessor方法没有的话解析beandifinition放入map中
Spring扩展点
spring依赖循环
定义:
循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。
解释下就是A中有B B中有A 创建的时候会永久的循环下去
在xml中使用depends-on解决循环依赖的问题只能只用在单例对象中 原型对象会抛异常
循环依赖流程
每次创建bean的时候,会根据类的属性进行处理 如果 a依赖循环于b则,创建a的过程中放入三级缓存,然后创建b 因为b依赖了a 所以创建b中从三级缓存中获取a,并赋值
继续创建a,并从三级缓存获取b赋值给自己
spring的beanfactorypostprocessor
beanfactorypostprocessor所有容器初始化后进行执行
@PostConstruct(注释的方法)
加载顺序Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)
@PostConstruct等所有的bean创建完成之后回调方法