问题一:BeanDefinition是什么
BeanDefinition是什么
参考回答:
是spring核心bean的配置信息
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615382
问题二:什么情况下出现循环依赖?
什么情况下出现循环依赖?
参考回答:
并非使用者手动去getBean才会加载并初始化,而是框架启动时进行加载Spring创建
Bean - #DefaultListableBeanFactory#preInstantiateSingletons @Overridepublic void preInstantiateSingletons() throws BeansException { //...... List<String> beanNames = new ArrayList<>(this.beanDefinitionNames); // Trigger initialization of all non-lazy singleton beans... for (String beanName
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615383
问题三:什么是构造器内的循环依赖?
什么是构造器内的循环依赖?
参考回答:
构造器内的循环依赖是指在通过构造器注入依赖时,两个或多个bean相互依赖对方,导致无法解析应该先实例化哪个bean的问题。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615384
问题四:什么是强依赖?为什么Spring不支持构造器内的强依赖?
什么是强依赖?为什么Spring不支持构造器内的强依赖?
参考回答:
强依赖是指在构造器注入中,一个bean的实例化严格依赖于另一个bean的先实例化。Spring不支持构造器内的强依赖,因为这种依赖方式会导致“先有鸡还是先有蛋”的问题,即无法确定哪个bean应该先被实例化。除非使用者自身实现代理加延迟注入,但这种方式很难解决,且Spring认为这种注入场景都可以用其他方式代替,并且这种场景极少。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615385
问题五:Spring是如何处理弱依赖的?
Spring是如何处理弱依赖的?
参考回答:
Spring 4.3之后增加了ObjectProvider来处理弱依赖。ObjectProvider可以在需要的时候才提供依赖的bean,从而避免了强依赖带来的问题。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615386