博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring----Bean的生命周期和循环依赖
阅读量:5124 次
发布时间:2019-06-13

本文共 983 字,大约阅读时间需要 3 分钟。

循环依赖:

  A类引用了B,B类引用了A,像这种循环着依赖就是循环依赖;

对于这种配置不会报错

对于这种配置会报错(Error creating bean with name 'instanceA': Requested bean is currently in creation: Is there an unresolvable circular reference?)

  

在了解生命周期

doGet()方法:

1、解析别名

final String beanName = transformedBeanName(name);

2、从单例缓冲池中获取对象(第一次获取不到)

Object sharedInstance = getSingleton(beanName);

3、判断如果需要创建的bean是原型(非单例),就会抛出异常;

4、判断当前容器是否有父工厂,(有由父工厂加载)

5、合并bean定义(如果类似下面的这种配置,就需要合并bean定义)

代码

final RootBeanDefinition mbd = getMergedLocalBeanDefinition(beanName);

6、调用dependson依赖检查(比如下面这种配置就会报错)

@DependsOn("InstanceB")    @Bean    public InstanceA instanceA(){        return new InstanceA();    }    @DependsOn("InstanceA")    @Bean    public InstanceB instanceB(){        return new InstanceB();    }

6、创建实例,如果是单例,调用

getSingleton(beanName, new ObjectFactory() {}

 

转载于:https://www.cnblogs.com/yanxiaoge/p/11481611.html

你可能感兴趣的文章
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>