spring----Bean的生命周期和循环依赖

循环依赖:

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

对于这种配置不会报错

    <bean id="instanceA" class="com.zy.entities.InstanceA"><property name="instanceB" ref="instanceB"></property></bean><bean id="instanceB" class="com.zy.entities.InstanceB"><property name="instanceA" ref="instanceA"></property></bean>

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

<bean id="instanceA" class="com.zy.entities.InstanceA"><constructor-arg name="instanceB" ref="instanceB"></constructor-arg>
</bean>
<bean id="instanceB" class="com.zy.entities.InstanceB"><constructor-arg name="instanceA" ref="instanceA"></constructor-arg>
</bean>

  

在了解生命周期

doGet()方法:

1、解析别名

final String beanName = transformedBeanName(name);

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

Object sharedInstance = getSingleton(beanName);

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

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

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

<bean id="xx" class="com.zy.entities.InstanceB" abstract="true"></bean><bean id="xx2" class="com.zy.entities.InstanceA" parent="xx"></bean>

代码

final RootBeanDefinition mbd = getMergedLocalBeanDefinition(beanName);

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

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

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

getSingleton(beanName, new ObjectFactory<Object>() {}

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL count和case when配合统计给定条件下不重复的记录数

Iamlaosong文 1、我们知道&#xff0c;SQL语句中用count函数统计记录数量&#xff0c;配合distinct关键字可以统计非重复的记录数量。例如&#xff1a; select count(*), count(city_name), count(distinct city_name) from tb_county 查询结果是&#xff1a; 2534 2534 …

前端学习(6):javascript简介

我们需要思考以下六个问题&#xff1a; 1、javaScript是什么&#xff1f; 2、javaScript的用途是什么&#xff1f; 3、javaScript和ECMAScript的关系是什么&#xff1f; 4、javaScript由哪几部分组成&#xff1f; 5、javaScript的执行原理是怎样的&#xff1f; 6、在页面…

提高系统性能

1.Cache缓存 对象有生命周期&#xff0c;有容量限制&#xff0c;适合保存有状态属性的对象。 有状态的session bean运行在EJB容器的Cache中 2.Pool池 对象池&#xff0c;实现对象的大量并行访问 无状态的session bean运行在EJB容器的Pool中。转载于:https://www.cnblogs.com/cx…

2019 徐州icpc网络赛 E. XKC's basketball team

题库链接&#xff1a; https://nanti.jisuanke.com/t/41387 题目大意 给定n个数&#xff0c;与一个数m&#xff0c;求ai右边最后一个至少比ai大m的数与这个数之间有多少个数 思路 对于每一个数&#xff0c;利用二分的方法求他右边大于等于aim的数的最后一个值。 关键在于怎么二…

Hive中COUNT的高级用法(条件过滤等)

在HIVE中&#xff0c;除了COUNT(*)外&#xff0c;COUNT还可以有很多高级用法。 SELECTtype, count(*), count(DISTINCT u), count(CASE WHEN plat1 THEN u ELSE NULL END), count(DISTINCT CASE WHEN plat1 THEN u ELSE NULL END), count(CASE WHEN (type2 OR type6) THEN u E…

前端学习(7):web的三大技术

HTML(5) 是一门标记型语言&#xff0c;主要由一些具备特殊含义的标签构成&#xff08;建筑物结构&#xff09; 所谓HTML是“超文本标记语言”的英文缩写。我们上网所看到网页&#xff0c;多数都是由HTML写成的。“超文本”是指页面内可以包含图片、链接&#xff0c;甚至音乐、…

SQL 关键字

Table B-1 列出了所由在 SQL 标准和 PostgreSQL 7.2 里是关键字的记号&#xff0e; 你可以在 Section 1.1.1 里找到 相关的背景信息&#xff0e; SQL 里有保留字(保留)和 非保留字之分&#xff0e;根据标准&#xff0c; 保留字是那些真正的关键字&#xff1b;我们决不能用它们…

scala的foreach和for

一句印象深刻的话&#xff0c;Alan Kay&#xff08;Smalltalk发明者&#xff09;说得一句话&#xff1a;“I’m not against types, but I dont know of any typesystems that arent a complete pain, so I still like dynamic typing”。 并不是静态类型不好&#xff0c;只是静…

Fedora7 安装完全过程

操作系统课要用Fedora7 安装配置真是一把辛酸泪呀..... 首先是找镜像文件&#xff08;这个就找了好久.....&#xff09;&#xff1a; https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/7/Fedora/x86_64/iso/ 下载下来&#xff08;很久&#xff09;之后&a…

前端学习(8):HTML的基本属性和结构

一、HTML文档结构 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <title>css样式优先级</title> </head> <body> </body> </html> <!DOCTYPE html>声明为HTML5文…

Scala:Function1、Function2

Function1 带一个参数的方法&#xff0c;声明时&#xff0c;它需要两个泛型参数&#xff0c;第一个是传入的数据类型&#xff0c;第二个表示返回的数据类型&#xff0c;Function1是 trait &#xff0c;它有一个apply方法&#xff0c;用来对输入参数进行处理了&#xff0c;使用…

如何更sql sever数据库表的所有者

dbo不是表caseTable的所有者,就无法在查询分析器里执行各种sql语句,提示:服务器: 消息 208&#xff0c;级别 16&#xff0c;状态 1&#xff0c;行 1对象名 caseTable 无效。 表一般默认的所有者是dbo,现在有几个表不是的,所以无法用sa来连接,请问怎么改回为dbo呢? EXEC sp_c…

借助云开发轻松实现后台数据批量导出丨实战

小程序导出数据到excel表&#xff0c;借助云开发后台实现excel数据的保存 我们在开发小程序的过程中&#xff0c;可能会有这样的需求&#xff1a;如何将云数据库里的数据批量导出到excel表里&#xff1f; 这个需求可以用强大的云开发轻松实现&#xff01; 这里需要用到云函数&a…

Storm的ack机制在项目应用中的坑

正在学习storm的大兄弟们&#xff0c;我又来传道授业解惑了&#xff0c;是不是觉得自己会用ack了。好吧&#xff0c;那就让我开始啪啪打你们脸吧。 先说一下ACK机制&#xff1a; 为了保证数据能正确的被处理, 对于spout产生的每一个tuple, storm都会进行跟踪。 这里面涉及到ac…

云开发数据库VS传统数据库丨云开发101

云开发数据库与传统数据库的不同 在小程序云开发中&#xff0c;最核心的便是三大组件&#xff1a;数据库、云存储和云函数&#xff0c;从今天开始&#xff0c;我们将开始隔日更的专栏文章&#xff0c;云开发101&#xff0c;在第一周&#xff0c;我们将从最最核心的数据库开始说…

前端学习(10):HTML语义化

我理解的HTML语义化 经过查看别人博文中的一些描述&#xff0c;我将HTML的语义化总结为&#xff1a; 用最恰当的标签来标记内容。 该如何理解呢&#xff1f;比如需要加入一个标题&#xff0c;这个标题的字体比正文的要大写&#xff0c;还要加粗。能够实现这种效果的方法有很多…

大尾端 小尾端

提到体系结构时&#xff0c;经常遇到大小尾端的概念&#xff0c;这里做个总结。 big endian&#xff1a;大尾端&#xff0c;也称大端&#xff08;高位&#xff09;优先存储。little endian&#xff1a;小尾端&#xff0c;也称小端&#xff08;低位&#xff09;优先存储。如下00…

Storm的BaseBasicBolt源码解析ack机制

我们在学习ack机制的时候&#xff0c;我们知道Storm的Bolt有BaseBasicBolt和BaseRichBolt。 在BaseBasicBolt中&#xff0c;BasicOutputCollector在emit数据的时候&#xff0c;会自动和输入的tuple相关联&#xff0c;而在execute方法结束的时候那个输入tuple会被自动ack。 在使…

博客中gitalk最新评论的获取 github api使用

博客中&#xff0c;对于网友的评论以及每篇文章的评论数还是很重要的。但是基于静态的页面想要存储动态的评论数据是比较难的&#xff0c;一般博客主题中都内置了评论插件&#xff0c;但是博客主题中对于最新评论的支持显示还是很少的&#xff0c;至少目前我是没怎么发现。博客…

前端学习(11):标题和段落

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>标题和段落</title> </head> <body><h1>我是歌谣</h1><h2>我是歌谣</h2><h3>我是歌谣</h3>&l…