- 为什么方法A只会调用一次。
- Spring IOC的过程是
资源文件(xml,annotation,class, yml/properties) -> BeanDefinition -> BeanWrapper(依赖注入) -> Object - 而把@Configuration、@Bean解析成BeanDefinition是在org.springframework.context.annotation.ConfigurationClassPostProcessor
-
然后它会把它伪装为xml 中factory-method
-
首先把@Bean注解解析到ConfigurationClass类中。
-
然后把它伪装为factory-method
- 在解析@configuration的时候获取到的方法是随即的 也就是a(),b()方法的顺序是随即的。
-
就是把它添加到类ConfigurationClass的顺序是随机的。
- 但是在解析的时候只会保证调用方法a只会调用一次
-
因为在处理@Configuration进行了Cglib增强。
- org.springframework.context.annotation.ConfigurationClassEnhancer.BeanMethodInterceptor
-
它会判断容器中是否包含这个对象。
- 如果容器当中包含这个对象,就是从容器中直接获取。而不是调用一次方法。
-
如果要控制@Configuration里面的调用顺序,你可以在@Bean里面添加方法参数。这样可以控制实例化的顺序。在处理这个类的时候,它就会先调用方法a,然后再调用方法b,因为实例B对象的初始化依赖于实例A的初始化。这样就达到控制方法调用顺序的目的
Spring @Configuration 加载
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 文章作者:Tyan博客:noahsnail.com 3.4 Dependencies A typical ente...
- http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
- 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 3.8 Container Exten...
- 利用 Gitbook 生成文档中心站点 经过一个多月,Bugtags 最近上线了自己的文档站点(docs.bugt...