page contents

Spring创建Bean实例过程

Pack 发布于 2019-12-31 15:48
阅读 655
收藏 0
分类:Java开发

问题一:在这一步,调用doScan(basePackage)去扫描classpath:/**.class,但是这个地方只是生成了beanDefintion,而不是在此处创建实例。是类似于Tom老师所写的将所有类路径先存起来的意思吗?


 attachments-2019-12-IGgXyGHX5e0afd3324a06.png

问题二:这个是源码里面初始化实例时的代码,循环遍历所有beanName时,需要对beanName进行一个格式化,为什么会是工厂Bean,而且还需要判断是否存在引用链,不太懂,求大佬解释,最好有例子,非常感谢!

attachments-2019-12-jiVfp3Yn5e0afd3e83c8f.png

 

问题三:在获取单例的时候,存在依赖注入的情况,在创建依赖的时候为了避免循环依赖,原则是不等bean创建完成就会将bean的ObjectFactory提前曝光(即将对应的ObjectFatory加入缓存)一旦下一个bean创建需要依赖上一个bean,则直接使用ObjectFatory对象。那么这种情况是指一个@Component类中带有@Autowired的情况吗?ObjectFatory对象又是指的什么呢?这一段话有点绕,求大佬解释!


72
Pack
Pack

问题一:BeanDefintion是保存所有的配置,以便后续复用。
问题二:描述不够清晰。
问题三:循环依赖主要解决已经初始化的Bean中包含延时初始化的属性。

请先 登录 后评论