参考:http://yanln.iteye.com/blog/2210723 
这两者都是表示对其他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

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

public class SystemSettings{  
           //缓存更新时间  
           public static int REFRESH_CYCLE = 60;  
           ......  
}

现在我们这些参数不再是写死的,需要在后台对这些参数进行管理:管理员可以对这些参数进行更改,并且会存储入库,系统启动的时候,会从数据库加载这些参数,假设加载参数的类是SystemInit

public class SystemInit{  
          public SystemInit(){  
                     //模拟从数据库中加载的系统参数配置值  
                     SystemSettings.REFRESH_CYCLE=100;  
                     ......  
          }  
}

我们的系统现在有一个定时配置刷新器,用于定时刷新这些配置:

public class CacheManager{  
          public CacheManager(){  
                    Timer t = new Timer();  
                    TimerTask cacheTask = new CacheTask();                      
                     //缓存刷新定时处理  
                    t.schedule(cacheTask,0,SystemSettings.REFRESH_CYCLE);  
          }  
          ......  
}

在这个例子中,我们的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销毁的
————————————————
版权声明:本文为CSDN博主「soputasmile11」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014473112/article/details/80662728

Spring中的ref和depends-on区别相关推荐

  1. C#中关键字ref与out的区别(转)

    C#中关键字ref与out的区别(转) 在C#中,ref与out是很特殊的两个关键字.使用它们,可以使参数按照引用来传递. 总的来说,通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用 ...

  2. spring 中scope的singleton和prototype区别

    <bean id="meetAction" class="com.web.actions.MeetsAction"   scope="proto ...

  3. Spring中@NotEmpty、@NotBlank、@NotNull 区别和使用

    1:引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>sp ...

  4. Spring中@Controller和@RestController之间的区别

    1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2.  Controller, RestController的不同点 @C ...

  5. Spring中使用id和name的区别。

    使用id时 <bean id="USE01Blogic" class="com.sxzlc.co.USE.USEO1Blogic"> id在项目中唯 ...

  6. Spring中@within与@target的区别

    区别 @within:定义在哪里,就作用在哪里.(有点静态编译的味道) @target:运行在哪里,就作用在哪里.(类比动态执行的感觉)@within,如果子类没有重写,在某个类上加一个注解,就会默认 ...

  7. Spring中ref local与ref bean区别

    为什么80%的码农都做不了架构师?>>>    Spring中ref local与ref bean区别 今天在做SSH框架Demo实例时,在ApplicationResources. ...

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

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

  9. Spring中SmartLifecycle和Lifecycle的作用和区别

    欢迎关注方志朋的博客,回复"666"获面试宝典 本文基于SpringBoot 2.5.0-M2讲解Spring中Lifecycle和SmartLifecycle的作用和区别,以及如 ...

  10. java悲观者不加事务_在spring中,使用事务和不用事务的区别

    各位高手大家好,我最近在学习Spring,自己也作了几个例子.但我在开发的过程中发现我使用事务和不使用事务效果都一样,我想问一下两者的区别,谢谢大家:第一种,不使用事务,Spring... 各位高手大 ...

最新文章

  1. 给力的 Google HTML5 训练营(HTML5 DragDrop 拖拽、FileRea...
  2. sae上部署第一个站
  3. antd 能自适应吗_Antd表格滚动 宽度自适应 不换行的实例
  4. 《英雄联盟》出现大面积闪退;两名 95 后大学生用脑电波写“福”字;Windows蓝屏为什么是蓝底白字? | 极客头条...
  5. 从程序设计、tqdm到lambda:python的“奇技淫巧”,让实现效率翻倍【科学计算类】
  6. C# WinForm DataGridView 给标题列增加序号及格式化某个字段
  7. 单元素的枚举类型已经成为实现Singleton的最佳方法
  8. STM32 USB Host 鼠标和键盘驱动 -- 原创
  9. 专业学习与职业发展之我见
  10. 美通企业日报 | 阿里收购网易考拉入股网易云音乐;宁德时代与博世达成战略合作...
  11. python连通区域计算长度_连通区域算法小结
  12. POJ1753题解(枚举)
  13. 加速及控制精灵移动,加速计值的处理
  14. 婚姻介绍所怎么做身份实名认证?
  15. 宽依赖和窄依赖_Spark RDD中的依赖关系:宽依赖和窄依赖narrow/widedependency
  16. 《高效学习法》思维导图——Jan
  17. 【转】公司版本控制管理解决方案
  18. 天猫用户重复购买预测之数据分析
  19. linux 解压命令不提示信息,技术编辑研习linux解压命令【解决措施】
  20. R12.2.0 post install checks error : RW-50016: Error: - {0} was not created - 1

热门文章

  1. windows2003视频教程
  2. m0单片机io口_51单片机50个例程代码
  3. VS2015 如何打包winform 安装程序
  4. 计算机程序员证书限制条件,高级程序员考试报名条件有什么限制?
  5. [ZT]范伟导老师Sniffer课程资料
  6. 关于机械臂仿真的几款软件简介
  7. 对接谷歌翻译接口的WordPressSEO插件
  8. 机顶盒ttl无法输入_请教大神,机顶盒接TTL进不了uboot模式
  9. 安全漏洞防御(1)如何防止被拖库
  10. 【编程常识】关于 Visual Basic 6.0 语言