Spring 使用 ref 和 depends-on 属性的使用
在Spring官方文档的描述中,如果一个Bean A依赖另外一个Bean B,那么在IOC容器初始化两个Bean时,首先会初始化被依赖的Bean B,再初始化依赖Bean A.
我们来看实例:
假如有两个Bean,一个是Bean我们命名为car,另外一个命名为carrey, carrey依赖car。
car.java
carrey.java
测试类main.java
首先,我们不使用depends-on属性,按照通常情况下的配置方法来配置两个bean的依赖关系
1、将被依赖的Bean car配置到依赖Bean carrey之前
运行结果
运行结果
为什么会出现以上不同的运行结果呢???官方文档不是说,如果一个Bean A依赖另外一个Bean B,那么在IOC容器初始化两个Bean时,首先会初始化被依赖的Bean B,再初始化依赖Bean A吗?后来查了一下,原因是IOC容器在初始化单例Bean时,优先按照Bean的配置顺序初始化,如果两个相互依赖的Bean在初始化时,依赖Bean A的初始化之前需要强制先初始化被依赖的Bean B,这时就需要用到depends-on属性了。
对于以下两种配置,IOC容器首先都会初始化car,再初始化 carrey
运行结果:
3、使用depends-on的好处
在一些特殊情况下,Bean初始化时需要调用一些静态的初始化程序,在特殊情况下,这些被调用的静态初始化程序的值是通过被依赖的Bean设置的,比如我们以上的所举的car和carrey,carrey依赖car,在carrey初始化时我们需要打印引擎名称(Engine Name),但是引擎名称我们是在car中设置的,同时引擎名称是引擎类(Engine)中的一个静态属性engname
Engine.java
car.java
carrey.java
如果不使用depends-on
运行结果:
使用depends-on
运行结果:
转载于:https://www.cnblogs.com/Ron-Zheng/p/5899326.html
Spring 使用 ref 和 depends-on 属性的使用相关推荐
- Spring中ref local与ref bean区别
为什么80%的码农都做不了架构师?>>> Spring中ref local与ref bean区别 今天在做SSH框架Demo实例时,在ApplicationResources. ...
- Spring中的Bean配置、属性配置、装配内容详细叙述
文章目录 1.Bean的配置 1.1.配置方式 2.Bean的实例化 2.1.构造器实例化 2.2.静态工厂方式实例化 2.3.实例工厂方式实例化 3.Bean的作用域 3.1.作用域的种类 4.Be ...
- Spring Bean的配置及常用属性
作为 Spring 核心机制的依赖注入,改变了传统的编程习惯,对组件的实例化不再由应用程序完成,转而交由 Spring 容器完成,在需要时注入应用程序中,从而对组件之间依赖关系进行了解耦.这一切都离不 ...
- Spring——Bean管理-xml方式进行属性注入
目录 一.xml方式创建对象 二.xml方式注入属性 第①种方式注入:set方法注入 第②种方式注入:有参构造函数注入 constructor-arg:通过构造函数注入 用name标签属性: 不按照顺 ...
- spring boot通过命令行配置属性
spring boot通过命令行配置属性 命令:java -jar xxx.jar --server.port=8888,通过使用–-server.port属性来设置xxx.jar应用的端口为8888 ...
- Spring框架中XML配置特殊属性注入
Spring框架中XML配置特殊属性注入 前言 创建测试类 其他类型属性 前言 Spring框架中,在通过set方式进行属性注入时,可能会遇到某些特殊字符的注入,例如:null和某些标签字符" ...
- Flowable 6.6.0 BPMN用户指南 - (5)Spring Boot - 5.8 Flowable应用属性
Flowable 6.6.0 用户指南相关文档下载 BPMN用户指南 第一部分 - 中文PDF精编版 BPMN用户指南 第二部分 - 中文PDF精编版 BPMN用户指南 第三部分 - 中文PDF精编版 ...
- spring配置中id和name属性的区别
可能大家在网上都应该搜索过在 Spring 配置中 id 和 name 属性的区别,可能你会搜索到有一大堆的区别,不过在我这里可能不一样了. 我这里 Spring 的版本为 3.2.4,区别不是很大, ...
- 根据Spring上下文对象xxxContext获得*.properties属性文件中的配置属性值
最近写了一个文件上传和下载的简单测试demo,对于这种需要部署在服务器上的,而不是随便在本机上跑跑的那种,对于上传和下载的目录路径的选择和配置尤为重要,这个不能在代码里面写死,必须是灵活可配置的. 一 ...
最新文章
- JavaScript系列-(原型-原型连-call-apply-继承)
- jupyter 多个python版本
- 高并发缓存处理之——缓存穿透的几种形式及解决方案
- 不到200行代码实现一个不断旋转的椭圆动画效果
- LoadRunner 技巧之THML 与 URL两种录制模式分析
- 【读书笔记0101】Beginning linux programming-3rd
- matlab自家自减,【求助】VC环境下自增(++)自减(--) - 信息科学 - 小木虫 - 学术 科研 互动社区...
- 《CCNP ROUTE 300-101认证考试指南》——2.10节 复习所有考试要点
- Hadoop作业提交多种方案具体流程详解
- 安装Oracle驱动ojdbc8到本地maven仓库
- eplan 2.7安装过程中multikey黄色感叹号解决办法
- 操作 神通数据库_神通数据库安装及操作笔记
- 电脑蓝牙耳机无法调节用关闭绝对音量来解决
- java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
- 电脑桌面便签小工具哪款免费又好用
- 北京大学计算机研究生怎么样,北京大学计算机专业在职研究生怎么样?
- 粉丝福利 | 秒 get 支付宝同款扫码组件
- 【文献阅读2】Cytological and transcriptome analyses reveal abrupt gene expression for meiosis and sacchari
- java实现回文数算法
- Linux-命令:ll命令报错-bash: ll: command not found