bean之间的继承和依赖关系

简介: 继承Bean配置Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父Bean的Bean称为子Bean子Bean从父Bean中继承配置,包括Bean的属性配置子Bean可以覆盖从父Bean继承过来的配置父Bean可以作为配置模版,也可以作为Bean实例。

 

继承Bean配置

Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父BeanBean称为子Bean

Bean从父Bean中继承配置,包括Bean的属性配置

Bean可以覆盖从父Bean继承过来的配置

Bean可以作为配置模版,也可以作为Bean实例。若只想把父Bean作为模版,可以设置<bean>abstract属性为true,这样的String将不会实例化这个Bean

并不是<bean>元素里的所有属性都会被继承。比如:autowireabstract,

可以忽略父Beanclass属性,让子Bean指定自己的类,而共享相同属性配置,但此时abstract必须设置为true

<!--抽象Bean:beanabstract属性为truebean,这样的bean不能被IOC容器实例化,只用来被继承配置. 若某一个beanclass属性没有指定,则该bean必须是一个抽象bean -->

   <bean id="address" class="cn.bdqn.spring.Address" p:ciyt="beijing"

      p:street="wudaokou" abstract="true"></bean>

   <bean id="a1" class="cn.bdqn.spring.Address" p:street="肖家河"

      parent="address">

   </bean>

Bean之间的依赖关系

Spring允许用户通过depends-on属性设定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创建好

如果前置依赖于多个Bean,可以通过逗号,空格或的方式配置Bean的名称

   <bean id="person" class="cn.bdqn.spring.Person" p:name="zhangsna"

      p:age="23" depends-on="car">

   </bean>

   <bean id="car" class="cn.bdqn.spring.Car" p:brand="ford" p:price="100000"></bean>

 

 

Spring bean 的继承和Java bean 的继承有如下区别:

 

 1、Spring 中的子bean 和父bean 可以是不同类型,但在Java 中的,子类是对父类的加强,是一种特殊的父类。
 2、Spring 中bean 的继承是实例之间的关系,主要表现为参数值的延续:而Java 中的继承是类与类之间的关系,主要表现为方法及属性的延续。
 3、Spring 中子bean 不可作父bean 使用,不具备多态'性:而Java 中的子类实例完全可当成父类实例使用。

 

<bean id="person" class="cn.bdqn.spring.Person" p:name="zhangsna"p:age="23" depends-on="car"></bean><bean id="car" class="cn.bdqn.spring.Car" p:brand="ford" p:price="100000"></bean>

相关文章
|
8月前
|
存储 安全 C++
如何优雅地在C++库中实现实例化设计(二)
如何优雅地在C++库中实现实例化设计
47 0
|
Java Spring
创建名为 'authFilterRegistration' 的bean时,该bean依赖于一个未满足的依赖关系
创建名为 'authFilterRegistration' 的bean时,该bean依赖于一个未满足的依赖关系
74 1
|
2月前
|
XML 数据格式 容器
BeanFactory如何从配置文件中加载bean的定义以及依赖关系:
// 通常为BeanDefinitionRegistry的实现类,这里以DeFaultListabeBeanFactory为例 BeanDefinitionRegistry beanRegistry = new DefaultListableBeanFactory(); // XmlBeanDefinitionReader实现了BeanDefinitionReader接口,用于解析XML文件 XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReaderImpl(beanRegistry); // 加
|
2月前
|
Java 容器 Spring
Bean的实例化阶段
经过第一阶段,所有bean定义都通过BeanDefinition的方式注册到BeanDefinitionRegistry中当某个请求通过容器的getBean方法请求某个对象,或者因为依赖关系容器需要隐式的调用getBean时,就会触发第二阶段的活动:容器会首先检查所请求的对象之前是否已经实例化完成。 如果没有,则会根据注册的BeanDefinition所提供的信息实例化被请求对象,并为其注入依赖。 当该对象装配完毕后,容器会立即将其返回给请求方法使用。BeanFactory只是Spring IoC容器的一种实现,如果没有特殊指定,它采用采用延迟初始化策略:只有当访问容器中的某个对象时,才对
类与ES6类之间的继承
类与ES6类之间的继承
|
6月前
|
Java Spring 容器
循环依赖问题之实例化Bean是通过如何实现的
循环依赖问题之实例化Bean是通过如何实现的
|
8月前
|
存储 设计模式 缓存
如何优雅地在C++库中实现实例化设计(一)
如何优雅地在C++库中实现实例化设计
79 0
|
8月前
|
XML Java 数据格式
spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解
spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解
85 0
2.【类的组合(在一个类中定义一个类)】
2.【类的组合(在一个类中定义一个类)】
54 0
接口vs抽象类、继承vs组合,他们之间有啥关系
接口vs抽象类、继承vs组合,他们之间有啥关系