Bean之间主要有继承和依赖的关系,这里的继承并不是我们面向对象里面所提到的继承。

继承

我们先来创建一个新的配置文件beans-relation.xml

  1. <bean id="address" class="com.figsprite.bean.autowire.Address"  
  2.       p:city="福州" p:street="闽侯"/>  
  3. <bean id="address2" class="com.figsprite.bean.autowire.Address"  
  4.       p:city="福州" p:street="晋江"/> 

    在Main.java测试一下有没有问题:

  5. ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-relation.xml");  
  6.     
  7. Address address = (Address)ctx.getBean("address");  
  8. Address address2 = (Address)ctx.getBean("address2");  
  9.     
  10. System.out.println(address);  
  11. System.out.println(address2);  

    现在咱们看看这两个Address容器,大部分的属性配置是一样的,所以我们就想,在id="address2"中能不能只配id和p:street,其他的就用之前id="address"配置好的呢?这就是标签之间的继承关系,可以用到parent属性

  12. <bean id="address" class="com.figsprite.bean.autowire.Address"  
  13.       p:city="福州" p:street="闽侯"/>  
  14. <bean id="address2" p:street="晋江" parent="address" />  

    输出也是没有问题的:

    Address{city='福州', street='闽侯'}

    Address{city='福州', street='晋江'}

    针对继承Bean配置我们需要注意一下几点:

  • 子Bean从父Bean中继承配置,包括Bean的属性配置。
  • 子Bean也可以覆盖父Bean继承过来的配置。
  • 父Bean可以作为配置模板,也可以作为Bean实例。如果只想把父Bean作为模板,可以设置<bean>的abstract属性为true,这样Spring不会实例化这个Bean。
  • 不是<bean>元素里面的所有属性都会被继承,比如autowire,abstract等
  • 可以忽略父Bean中的class属性,让子Bean指定自己的类,而共享相同的属性配置,但此时abstract必须为true,也可以这么说若某个bean的class属性没有指定,则该bean必须是一个抽象bean

依赖

我们来定义一个person容器对象,若现在有个新要求,要求Person,必须要有一个关联的Car即Person依赖于Car这个bean

  1. <bean id="car" class="com.figsprite.bean.autowire.Car"  
  2.        p:brand="奥迪" p:price="233"/>  
  3.     
  4.     
  5.  <bean id="person" class="com.figsprite.bean.autowire.Person"  
  6.        p:name="小明" p:address-ref="address2" depends-on="car"/>  

Spring允许用户通过depends-on属性设定Bean前置依赖的Bean,这个前置依赖的Bean'会在本Bean的实例化前创建好,如果前置依赖于多个Bean,则可以通过逗号隔开,

上面的例子中虽然打印出来的car属性依旧是空值,不过如果我们删去<bean id="car">就会报错

Bean之间的关系的更多相关文章

  1. [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. Spring Bean之间的关系

    bean之间的关系:继承和依赖继承bean的配置 Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父bean的bean称为子bean 子bean从父bean中继承配置,包括 ...

  3. Spring(九):Spring配置Bean(二)自动装配的模式、Bean之间的关系

    XML配置里的Bean自动装配 Spring IOC容器可以自动装配Bean,需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式,模式包含:byType,byName, ...

  4. 峰Spring4学习(5)bean之间的关系和bean的作用范围

    一.bean之间的关系: 1)继承: People.java实体类: package com.cy.entity; public class People { private int id; priv ...

  5. 3.spring:自动装配/Bean之间的关系/作用域/外部文件/spel/

    1.自动装配/手动装配 xml配置文件里的bean自动装配 Spring IOC 容器里可以自动的装配Bean,需要做的仅仅是在<bean>的autowire属性里面指定自动装配模式 -& ...

  6. Spring学习--Bean 之间的关系

    Bean 之间的关系:继承.依赖. Bean 继承: Spring 允许继承 bean 的配置 , 被继承的 bean 称为父 bean , 继承这个父 bean 的 bean 称为子 bean. 子 ...

  7. Spring初学之bean之间的关系和bean的作用域

    一.bean之间的关系 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...

  8. XML配置里的Bean自动装配与Bean之间的关系

    需要在<bean>的autowire属性里指定自动装配的模式 byType(根据类型自动装配) byName(根据名称自动装配) constructor(通过构造器自动装配) 名字须与属性 ...

  9. Spring_自动装配 & bean之间的关系 & bean的作用域

    1.自动装配 beans-autowire.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...

  10. Spring基础——在 IOC 容器中 Bean 之间的关系

    一.在 Spring IOC 容器中 Bean 之间存在继承和依赖关系. 需要注意的是,这个继承和依赖指的是 bean 的配置之间的关系,而不是指实际意义上类与类之间的继承与依赖,它们不是一个概念. ...

随机推荐

  1. Android Stuido xml使用app属性没有提示代码

    解决方法: 打开file->invalidate Caches,之后build->rebuild project 2.重启Android Studio

  2. 有关mysql实现oracle分析函数功能的方法

    目前公司erp开发有一个脚本需求:对于收款合同审批单和收款合同(n:1),需要获取收款审批单中最新的一条审批记录来更新其对应的收款合同的相关信息. 难点主要在对相同类别的属性进行分组然后组内排序(分组 ...

  3. 最简单打开三星note8三星galaxy susb调试模式的方法

    每当我们使用安卓手机连接PC的时候,如果手机没有开启usb调试模式,PC则无办法成功检测到我们的手机,部分APP也无办法正常使用,这时我们需要找处理方法将手机的usb调试模式开启,以下内容我们介绍三星 ...

  4. Android 简单实现控件的拖动

    控件的拖动,使用到一个监听事件 setOnTouchListener:XML代码: <?xml version="1.0" encoding="utf-8" ...

  5. ArcFace虹软与Dlib人脸识别对比

    我司最近要做和人脸识别相关的产品,原来使用的是其他的在线平台,识别率和识别速度很满意,但是随着量起来的话,成本也是越来越不能接受(目前该功能我们是免费给用户使用的),而且一旦我们的设备掉线了就无法使用 ...

  6. spring学习总结——装配Bean学习四(导入和混合配置)

    情景:在典型的Spring应用中,我们可能会同时使用自动化和显式配置(JavaConfig)或者XML配置,幸好在Spring中,这些配置方案都不是互斥的.你尽可以将JavaConfig的组件扫描和自 ...

  7. 【原】Java学习笔记014 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 面向对象思想 // ...

  8. 【原】Java学习笔记007 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // for循环 // ...

  9. 炫龙炎魔T1笔记本 Win7 系统安装

    系统链接:https://pan.baidu.com/s/1T5FdJf1jhTj78vEBYCXxyA 密码:rl7m 1.制作系统盘(下载文件中有教程),插好U盘,重启计算机 2.按F2进入BOS ...

  10. 安装ESXi部署OVF详细步骤

    整个安装部署过程均在个人环境进行.欧克,我们现在开始. 一.安装ESXi 1.Enter回车 2.Enter回车继续 3.F11,接受继续 4.Enter,回车继续(选择安装ESXi的设备) 5.默认 ...