Spring在初始化时,解析xml文件,将bean信息放在位于beanFactory的beanDefinitionMap中。
之后,spring会开始依赖注入,若设置了lazy-init,需要在调用getBean时,实时完成依赖注入过程。
问:
如果get一个单例的bean,应该不需要再次注入,请问,该单例保存在何处?
如果get一个protoType的bean,是否需要再次执行依赖注入?
Spring在初始化时,解析xml文件,将bean信息放在位于beanFactory的beanDefinitionMap中。
之后,spring会开始依赖注入,若设置了lazy-init,需要在调用getBean时,实时完成依赖注入过程。
问:
如果get一个单例的bean,应该不需要再次注入,请问,该单例保存在何处?
如果get一个protoType的bean,是否需要再次执行依赖注入?
spring 默认的scope就是singleton的
<bean id=".." class=".." scope="prototype" />
设置私有单例
<bean id="exampleBean" class="example.Singleton" factory-method="getInstance"/>
太深入的不懂,不敢托大。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
DefaultListableBeanFactory 这个类是一个真正可以使用的beanfactory实现, DefaultSingletonBeanRegistry类里的singletonObjects哈希表保存了单例对象。
每次get一个prototype的对象是要重新注入的