Bean之间的关系
Bean之间主要有继承和依赖的关系,这里的继承并不是我们面向对象里面所提到的继承。
继承
我们先来创建一个新的配置文件beans-relation.xml
- <bean id="address" class="com.figsprite.bean.autowire.Address"
- p:city="福州" p:street="闽侯"/>
- <bean id="address2" class="com.figsprite.bean.autowire.Address"
- p:city="福州" p:street="晋江"/>
在Main.java测试一下有没有问题:
- ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-relation.xml");
- Address address = (Address)ctx.getBean("address");
- Address address2 = (Address)ctx.getBean("address2");
- System.out.println(address);
- System.out.println(address2);
现在咱们看看这两个Address容器,大部分的属性配置是一样的,所以我们就想,在id="address2"中能不能只配id和p:street,其他的就用之前id="address"配置好的呢?这就是标签之间的继承关系,可以用到parent属性
- <bean id="address" class="com.figsprite.bean.autowire.Address"
- p:city="福州" p:street="闽侯"/>
- <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
- <bean id="car" class="com.figsprite.bean.autowire.Car"
- p:brand="奥迪" p:price="233"/>
- <bean id="person" class="com.figsprite.bean.autowire.Person"
- p:name="小明" p:address-ref="address2" depends-on="car"/>
Spring允许用户通过depends-on属性设定Bean前置依赖的Bean,这个前置依赖的Bean'会在本Bean的实例化前创建好,如果前置依赖于多个Bean,则可以通过逗号隔开,
上面的例子中虽然打印出来的car属性依旧是空值,不过如果我们删去<bean id="car">就会报错

Bean之间的关系的更多相关文章
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Spring Bean之间的关系
bean之间的关系:继承和依赖继承bean的配置 Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父bean的bean称为子bean 子bean从父bean中继承配置,包括 ...
- Spring(九):Spring配置Bean(二)自动装配的模式、Bean之间的关系
XML配置里的Bean自动装配 Spring IOC容器可以自动装配Bean,需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式,模式包含:byType,byName, ...
- 峰Spring4学习(5)bean之间的关系和bean的作用范围
一.bean之间的关系: 1)继承: People.java实体类: package com.cy.entity; public class People { private int id; priv ...
- 3.spring:自动装配/Bean之间的关系/作用域/外部文件/spel/
1.自动装配/手动装配 xml配置文件里的bean自动装配 Spring IOC 容器里可以自动的装配Bean,需要做的仅仅是在<bean>的autowire属性里面指定自动装配模式 -& ...
- Spring学习--Bean 之间的关系
Bean 之间的关系:继承.依赖. Bean 继承: Spring 允许继承 bean 的配置 , 被继承的 bean 称为父 bean , 继承这个父 bean 的 bean 称为子 bean. 子 ...
- Spring初学之bean之间的关系和bean的作用域
一.bean之间的关系 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...
- XML配置里的Bean自动装配与Bean之间的关系
需要在<bean>的autowire属性里指定自动装配的模式 byType(根据类型自动装配) byName(根据名称自动装配) constructor(通过构造器自动装配) 名字须与属性 ...
- Spring_自动装配 & bean之间的关系 & bean的作用域
1.自动装配 beans-autowire.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...
- Spring基础——在 IOC 容器中 Bean 之间的关系
一.在 Spring IOC 容器中 Bean 之间存在继承和依赖关系. 需要注意的是,这个继承和依赖指的是 bean 的配置之间的关系,而不是指实际意义上类与类之间的继承与依赖,它们不是一个概念. ...
随机推荐
- C# 绘制Word形状——基本形状、组合形状
一.序言 在Office Word中,支持在Word文档中插入类型非常丰富的形状,包括线条.矩形.基本形状(诸如圆形.多边形.星形.括号.笑脸等等图形).箭头形状.公式形状.流程图.旗帜图形.标注图形 ...
- Spring Boot入门-快速搭建web项目
Spring Boot 概述: Spring Boot makes it easy to create stand-alone, production-grade Spring based Appli ...
- FastDfs集群docker化部署
初识分布式文件系统FastDFS- 1.分布式与集群的区别 区别:集群是个物理形态,分布式是个工作方式.只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道:一个程序或系统,只要运行 ...
- java-初识引用分类及Map实现类WeakHashMap
1.同样的,话不多讲直接上代码 (1)认识了解下引用分类及其作用 package com.otherMapProduce; import java.lang.ref.WeakReference; /* ...
- CSS3 box-shadow 属性 紧跟在 -webkit-, -ms- 或 -moz-
浏览器支持 表格中的数字表示支持该属性的第一个浏览器版本号. 紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号. 语法 box-shadow: h-s ...
- Java list.remove( )方法需要注意的地方
List<Integer> integerList = new ArrayList<>(); 当我们要移除某个Item的时候 remove(int position):移除某个 ...
- Android为TV端助力listview 非常重要的几个属性
首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false Android:stackFromBottom="true" ...
- ORA-02030: can only select from fixed tables/views
有时候给一些普通用户授予查询系统对象(例如dynamic performance views)权限时会遇到"ORA-02030: can only select from fixed tab ...
- Linux 文件权限管理
1.文件权限的概述 在Linux系统下,使用权限来保护资源的安全将是一种不错的选择.系统中每个文件的权限都有可读(r).可写(w)和可执行(x)这三种权限,它们分别对应权限数值4.2 和1.系统为每个 ...
- MVC Remote 服务器验证
用此验证必须在Controller中编写返回值为JsonResult的Action public JsonResult CheckUserName(string UserName) { EFHelpe ...