美文网首页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