Spring IOC依赖注入后的bean放在哪?

Spring在初始化时,解析xml文件,将bean信息放在位于beanFactory的beanDefinitionMap中。

之后,spring会开始依赖注入,若设置了lazy-init,需要在调用getBean时,实时完成依赖注入过程。

问:

  1. 如果get一个单例的bean,应该不需要再次注入,请问,该单例保存在何处?

  2. 如果get一个protoType的bean,是否需要再次执行依赖注入?

阅读 11.6k
3 个回答
  1. DefaultListableBeanFactory 这个类是一个真正可以使用的beanfactory实现, DefaultSingletonBeanRegistry类里的singletonObjects哈希表保存了单例对象。

  2. 每次get一个prototype的对象是要重新注入的

初始化bean的信息会存在beanDefinitionMap中,依赖注入的时候,存放在factoryBeanObjectCache 的map中。

spring 默认的scope就是singleton的

<bean id=".." class=".." scope="prototype" />

设置私有单例

 <bean id="exampleBean" class="example.Singleton"  factory-method="getInstance"/>

太深入的不懂,不敢托大。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题