美文网首页java面试
spring-延迟查找

spring-延迟查找

作者: Wu杰语 | 来源:发表于2021-08-23 11:46 被阅读0次

ObjectFactory和ObjectProvider是实现延迟查找的两个方法,但是干学不用没啥用,延迟查找有什么作用呢?

what

既然是延迟,就是推迟一段时间,为啥要推迟一段时间,就要理解spring的bean的生命周期。

当通过xml或者注解读取配置后,IOC容器BeanFactory会构建并读取BeanDefinition,然后初始化未BeanWrapper,保存在ApplicationContext中。而Provider会在调用getBean过程中未初始化Bean,或者在依赖注入过程中未初始化Bean,既进行了延迟,通过延迟,让ApplicationContext整体完成初始化后,在真正需要的时候再进行Bean的初始化。

why

这样能做到什么呢?

  • 如果注入的实例为空,正常情况下会初始化抛出异常,通过延迟可以把异常延迟到运行的实际调用过程。
  • 如果注入有多个实例子,通过延迟可以先保证多个实例加载成功,ObjectProvider的方法会根据Bean实现的Ordered接口或@Order注解指定的先后顺序获取一个Bean。

summary

延迟查找这种特性,需要结合bean的生命周期来理解才能明白背后原因。

相关文章

网友评论

    本文标题:spring-延迟查找

    本文链接:https://www.haomeiwen.com/subject/kgnkiltx.html