这两者都是表示对其他bean的依赖,但是ref常用的情况是这个bean作为当前bean的属性,比如:

<bean id="a" class="ClassA"/>
<bean id="b" class="ClassB">
<property name="aref" ref="a" />
</bean>

这是很强的一个依赖关系了,但是有时候依赖关系并不会这么明显,我们依赖的bean也许并不是我们当前bean的属性,比如当前bean B,我们需要初始化一些值,这些值的初始化是依赖于bean A的,那么我们的bean B肯定是依赖于A的,但是A并不是B的什么,这个时候用ref肯定是不合适的,就可以用depends-on

举个例子:某个论坛拥有很多系统参数:

当缓存清理工具需要设置的缓存是从另一个配置参数的bean中获取的,配置参数bean就需要提前初始化
在这个例子中,我们的CacheManager如果想要获取最新配置,必须用到SystemSettings的值,而这个值需要用到我们的Bean SystemInit,SystemInit并不属于我们的CacheManager的属性或者其他的什么。但是逻辑上SystemInit是要先于CacheManager加载的,这个时候就可以用dependds-on了:

<bean id="sysinit" class="SystemInit">  <bean id="manager" class="CacheManager"  depends-on="sysinit"/> 

除此之外,使用了depends-on的时候,依赖他人的bean是先于被依赖bean销毁的

总结:depends-on适用于表面上看起来两个bean之间没有使用属性之类的强连接的bean,但是两个bean又确实存在前后依赖关系的情况,使用了depends-on的时候,依赖他人的bean是先于被依赖bean销毁的

bean属性ref和depend-on的区别及应用相关推荐

  1. (转)Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别

    Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: & ...

  2. Spring注入日期到bean属性-CustomDateEditor

    这一个Spring例子向您展示如何为bean属性注入一个"日期". package com.yiibai.common;import java.util.Date;public c ...

  3. Spring框架XML配置文件使用外部Bean属性注入

    Spring框架XML配置文件使用外部Bean属性注入 (1)创建两个类service类和dao类 (2)在service中调用dao里面的方法 (3)使用Spring框架进行调用 (4)创建测试类 ...

  4. Spring的Bean属性依赖注入

    属性依赖注入的三种方式 什么是Bean属性的注入?就是对一个对象的属性赋值.有三种方式: 第一种:构造器参数注入 第二种:setter方法属性注入(setter方法的规范需要符合JavaBean规范) ...

  5. Spring如何配置bean属性

    在Spring的bean配置文件中,每个bean必须有一个唯一标识的名称或者id,以及一个完全限定的类名,用来让Ioc容器对其进行实例化. 例如有一个简单的Bean: package com.gisx ...

  6. Spring3.1.0实现原理分析(七).填充Bean属性,初始化Bean,登记善后处理,注册单例Bean

    大家好,上篇博客我较详细分析了实例化过程,今天继续探讨实例化之后的其它步骤,分别是"填充Bean属性","初始化Bean","登记善后处理" ...

  7. Spring3.1.0实现原理分析(七).填充Bean属性,初始化Bean,登记善后处理,注册单例Bean...

    大家好,上篇博客我较详细分析了实例化过程,今天继续探讨实例化之后的其它步骤,分别是"填充Bean属性","初始化Bean","登记善后处理" ...

  8. [Spring] 注入Bean属性

    通常,JavaBean的属性是私有的,同时拥有一组存取器方法,setXXX()和getXXX()形式存在.Spring可以借助属性的set方法来配置属性的值,以实现setter方式的注入. Kenny ...

  9. 02_Spring Bean 属性 即xml <beans>标签详解

    Spring Bean Spring IOC容器相当于一个工厂,容器中的 Bean 相当工厂的产品.工厂要生产和管理 Bean,需要让工厂知道加载那些Bean,如何加载. Spring 配置文件支持两 ...

最新文章

  1. 存储过程编写经验和优化措施
  2. Android--Handler使用
  3. Oracle创建序列的sql语句,【Oracle学习】之 序列(Sequence)
  4. matlab绘制以Hz为单位的bode图
  5. 设计模式--责任链模式(COR)
  6. mysql数据库维护_维护MySQL数据库表
  7. java程序员的发展之路和职业规划
  8. 李猛:从MongoDB迁移到ES后,我们减少了80%的服务器
  9. 计算机病毒中毒该怎么办,电脑中毒后该怎么杀毒呢?
  10. 微模式重金招聘高级图像算法工程师
  11. android 获取sd卡视频文件名,android – 如何获取SD卡上的视频列表
  12. 程序的编译与链接、预处理符号、指令
  13. java栈和队列_栈和队列的面试题Java
  14. C++ std::enable_shared_from_this
  15. android NDK 详解
  16. Java编程基础03——进制运算数据类型变量
  17. 脚本的使用与修改Tampermonkey(油猴)
  18. Amazon Silk 你所不知道的在Kindle背后的大数据
  19. CST——贴片天线仿真
  20. Acwing-4728. 乘方

热门文章

  1. thymeleaf里面*{},@{},${}的用法
  2. 可用性评价方法的分类总结(一)
  3. 新玺配资:宁王重挫茅台拉升A股分化格局尽显
  4. mysql 谓词_Mysql谓词
  5. 财政指标是什么意思_国民经济主要指标是意思主要是什么?
  6. 多伦多大学计算机年薪,多伦多大学校方数据公布:商学院毕业生平均起薪9.9万加币...
  7. [HAOI2008]排名系统 [Zjoi2006]GameZ游戏排名系统 BZOJ1862BZOJ1056
  8. 凝心聚力,携“源”出海:开源社顾问委员会2023年第一季度会议圆满举办!
  9. 使用sudo apt-get update报错:E: 无法下载 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/dists/xenial/main/b
  10. 敬请加入 | Hey Google 智能家居虚拟峰会