1、一个bean对象依赖另一个bean依赖项,需要xml的ref来实现他们的依赖关系,也可以用depends-on来实现依赖关系。
2、要表示对多个bean的依赖关系,提供一个bean名称列表作为依赖属性的值(逗号、空格和分号是有效的分隔符):
3、依赖属性既可以指定初始化时依赖关系,也可以指定对应的销毁时依赖关系(仅在单例bean中)。因此,依赖还可以控制关闭顺序。
4、实例用ref来实现依赖关系:
(1) BeanOne 对象单独不依赖其他对象。

package com.it.app.bean;import org.springframework.beans.factory.DisposableBean;public class BeanOne implements DisposableBean {public BeanOne(){System.out.println("---BeanOne对象创建");}@Overridepublic void destroy() throws Exception {System.out.println("---BeanOne对象正在销毁");}
}

(2)BeanTwo对象依赖于beanOne。

package com.it.app.bean;import org.springframework.beans.factory.DisposableBean;public class BeanTwo implements DisposableBean {private BeanOne beanOne;public BeanTwo(BeanOne beanOne){this.beanOne = beanOne;System.out.println("---BeanTwo对象创建");}@Overridepublic void destroy() throws Exception {System.out.println("---BeanTwo对象正在销毁");}
}

(3)BeanThree对象依赖BeanTwo

package com.it.app.bean;import org.springframework.beans.factory.DisposableBean;public class BeanThree implements DisposableBean {private BeanTwo beanTwo;public BeanThree(BeanTwo beanTwo){this.beanTwo = beanTwo;System.out.println("---BeanThree对象创建");}@Overridepublic void destroy() throws Exception {System.out.println("---BeanThree对象正在销毁");}
}

(4)xml文件配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="beanOne" class="com.it.app.bean.BeanOne"></bean><bean id="beanTwo" class="com.it.app.bean.BeanTwo"><constructor-arg ref="beanOne"></constructor-arg></bean><bean id="beanThree" class="com.it.app.bean.BeanThree"><constructor-arg ref="beanTwo"></constructor-arg></bean>
</beans>

(5)容器启动初始化和关闭执行顺序:

package com.it.app;import com.it.app.service.ServiceImpl4;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class AppTwo {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-contextTwo.xml");System.out.println("****spring容器已启动****");context.close();System.out.println("****spring容器已关闭****");}
}

(6) 依赖初始化和关闭执行顺序:
初始化:BeanOne–>BeanTwo–>BeanThree
关闭: BeanThree -->BeanTwo–>BeanOne
5、实例用depends-on来实现依赖关系:
(1) beanOne ,beanTwo,beanThree对象创建:

package com.it.app.bean;import org.springframework.beans.factory.DisposableBean;public class BeanOne implements DisposableBean {public BeanOne(){System.out.println("---BeanOne对象创建");}@Overridepublic void destroy() throws Exception {System.out.println("---BeanOne对象正在销毁");}
}
package com.it.app.bean;import org.springframework.beans.factory.DisposableBean;public class BeanTwo implements DisposableBean {public BeanTwo(){System.out.println("---BeanTwo对象创建");}@Overridepublic void destroy() throws Exception {System.out.println("---BeanTwo对象正在销毁");}
}
package com.it.app.bean;import org.springframework.beans.factory.DisposableBean;public class BeanThree implements DisposableBean {public BeanThree(){System.out.println("---BeanThree对象创建");}@Overridepublic void destroy() throws Exception {System.out.println("---BeanThree对象正在销毁");}
}

xml信息,依赖关系:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--    <bean id="beanOne" class="com.it.app.bean.BeanOne"></bean><bean id="beanTwo" class="com.it.app.bean.BeanTwo"><constructor-arg ref="beanOne"></constructor-arg></bean><bean id="beanThree" class="com.it.app.bean.BeanThree"><constructor-arg ref="beanTwo"></constructor-arg></bean>--><bean id="beanThree" class="com.it.app.bean.BeanThree" depends-on="beanTwo,beanOne"></bean><bean id="beanTwo" class="com.it.app.bean.BeanTwo"></bean><bean id="beanOne" class="com.it.app.bean.BeanOne"  ></bean>
</beans>

(2) 依赖初始化和关闭执行顺序:
初始化:BeanOne–>BeanTwo–>BeanThree
关闭: BeanOne -->BeanTwo–>BeanThree

spring的depends-on相关推荐

  1. 【spring源码分析】IOC容器初始化(六)

    前言:经过前几篇文章的讲解,我们已经得到了BeanDefinition,接下来将分析Bean的加载. 获取Bean的入口:AbstractApplicationContext#getBean 1 pu ...

  2. spring官方文档阅读笔记

    前言 几个月前阅读spring文档时做的笔记,记录了以写我认为重要的内容. IOC container IOC(Inverse of Control) 控制反转,也称为DI(Dependency In ...

  3. Struts+Spring+Hibernate练习(完整)(1)

    转载:[url]http://www.blogjava.net/oksonic/archive/2005/11/06/18370.html[/url] 工具: Eclipse3.1.MyEclipse ...

  4. spring 事物的传播特性

    2019独角兽企业重金招聘Python工程师标准>>> 在使用spring事物通常会配置的Service层 ,当我们调用 一个service成的方法的时候 ,这个方法在执行的过程中对 ...

  5. 被spring和hibernate4逼疯

    spring3.1整合hibernate4,事务都配置上了的,但getCurrentSession()仍然获得不到 以下是各配置 web.xml ? 1 2 3 4 5 6 7 8 9 10 11 1 ...

  6. spring入门详细教程(五)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  7. Spring:源码解读Spring IOC原理

    2019独角兽企业重金招聘Python工程师标准>>> 一.什么是Ioc/DI? IOC容器:主要是完成了 完成对象的创建和依赖的管理注入等. 先从我们自己设计这样一个视角来考虑: ...

  8. spring源码解析之IOC容器(二)------加载和注册

    上一篇跟踪了IOC容器对配置文件的定位,现在我们继续跟踪代码,看看IOC容器是怎么加载和注册配置文件中的信息的.开始之前,首先我们先来了解一下IOC容器所使用的数据结构-------BeanDefin ...

  9. 深入理解 Spring 之源码剖析IOC

    推荐两篇文章: https://www.jianshu.com/p/e4ca039a2272 https://www.cnblogs.com/ITtangtang/p/3978349.html 一.介 ...

  10. Spring JMS

    异步处理通信是面向服务架构(SOA)的重要部分,因为企业中的许多系统通信,尤其是跟外部系统通信本来就是异步的.Java消息服务(JMS)就是用来编写异步消息J2EE应用的API.使用JMS API的传 ...

最新文章

  1. ovs router
  2. 做一个像Keras在线技术文档(Sphinx + GitHub + Read the Docs)
  3. 系统思考与《第五项修炼》
  4. 第02课:简单好用的中文分词利器 jieba 和 HanLP
  5. Git 忽略编译后文件
  6. ajax+lazyload时lazyload失效问题及解决
  7. Sun Oracle服务器做磁盘raid
  8. 家的N次方 经典台词
  9. 查询mysql所有表的大小
  10. Oracle 11g R1/R2 真正应用集群(RAC)基础
  11. IP跳转,驱动级IP重定向,驱动级IP跳转,IP转向实现代码及流程!
  12. linux下mysql命令大全_linux下mysql命令大全
  13. 【go 语言】linux下go开发教程3:Golang弃用go get工具
  14. WPA_CLI 的介绍:介绍如何使用wpa_cli连接WiFi的方法
  15. 图解angr中两种CFG的区别
  16. 数据湖iceberg-day02-Hive与Iceberg整合
  17. CCCF专题丨信息无障碍中的智能交互技术
  18. python日历模块_Python日历模块总结
  19. 注意力机制QKV理解
  20. 【Linux Socket 编程入门】06 - 拉个骡子溜溜:UDP编程模型代码分析

热门文章

  1. HashMap之keySet()方法
  2. 什么叫软考,软考的含金量高吗?
  3. 深圳Java培训:WebService的简单使用
  4. c语言课程设计实验报告模板,[C语言课程设计实验报告模板.doc
  5. Uboot1之什么是uboot?
  6. 小妞会装机 -- 一个装机软件的开发笔记 (二)
  7. 考研人的快乐瞬间,今天你快乐了吗?
  8. 【云原生Docker篇】Docker Cgroups资源控制管理
  9. IP地址,子网掩码,默认网关
  10. java fatal exception_java,_运行异常:A fatal exception has occurred. Program will exit,java - phpStudy...