2021-02-23

bean的继承和依赖

原文链 id="bean的继承和依赖">bean的继承和依赖

spring除了提供了一般的配置bean的方式之外,还实现了java中继承的特性,设置bean的父子关系,这样对于一些重复的配置就可以进行省略

bean的继承

配置bean的父子关系,父bean有的东西,子bean全部继承过来,不一样的进行覆盖

<!-- bean的继承关系 --><bean id="parent" > <property name="name" value="张三"/> <property name="car" ref="car"/> <property name="cars">  <list>   <ref bean="car"/>   <ref bean="car2"/>  </list> </property> <property name="carMap">  <map>   <entry key="AA" value-ref="car"/>   <entry key="BB" value-ref="car2"/>  </map> </property></bean><!-- 使用parent属性可以继承对应bean的所有属性 --><bean id="son" parent="person"> <property name="name" value="张飞"/></bean>

抽象bean

既然spring提供了继承,那么也就存在了专门用于被继承的bean,而不进行实例化,这种bean被称为抽象bean,使用abstract="true"表明这是一个抽象bean

由于抽象bean不进行实例化,所以抽象bean的class属性是没有意义的,可以省略不写

<!-- 抽象bean,不可被实例化--><bean id="abstract" abstract="true"> <property name="name" value="张三"/> <property name="car" ref="car"/> <property name="cars">  <list>   <ref bean="car"/>   <ref bean="car2"/>  </list> </property> <property name="carMap">  <map>   <entry key="AA" value-ref="car"/>   <entry key="BB" value-ref="car2"/>  </map> </property></bean><!-- 使用parent属性可以继承对应bean的所有属性 --><bean id="personSon" parent="abstract"> <property name="name" value="张飞"/></bean>

注意:抽象bean是不可以被实例化的,也就是说不可以使用上下文强制的获取该bean,否则会报错

org.springframework.beans.factory.BeanIsAbstractException: Error creating bean with name 'abstract': Bean definition is abstract

bean的依赖

有时候需要保证bean实例化的先后顺序,在创建一个bean的时候必须保证另外一个bean也被创建,如果另一个bean不存在,则无法正常实例化该bean

可以使用depends-on来实现bean之间的依赖关系

<!-- 依赖关系 --><bean id="person2" parent="abstract" depends-on="depend1"> <property name="name" value="关羽"/></bean><bean id="depend1" parent="abstract"> <property name="name" value="刘备"/></bean>

如果所依赖的bean不存在,实例化失败

警告: Exception encountered during context initialization - cancelling refresh attempt:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'person2' defined in class path resource [spring-config.'person2' depends on missing bean 'depend1'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No bean named 'depend1' available

由于本身的博客百度没有收录,博客地 />






原文转载:http://www.shaoqun.com/a/579571.html

跨境电商:https://www.ikjzd.com/

hunter:https://www.ikjzd.com/w/992

贸发局:https://www.ikjzd.com/w/1621


原文链id="bean的继承和依赖">bean的继承和依赖spring除了提供了一般的配置bean的方式之外,还实现了java中继承的特性,设置bean的父子关系,这样对于一些重复的配置就可以进行省略bean的继承配置bean的父子关系,父bean有的东西,子bean全部继承过来,不一样的进行覆盖<!--bean的继承关系--><beanid="
tinypic:https://www.ikjzd.com/w/114
blackbird:https://www.ikjzd.com/w/950
retriever:https://www.ikjzd.com/w/773
亚马逊推出在线Black Friday Deals商店 / 日本站卖家遭恶意差评:https://www.ikjzd.com/home/9960
口述:我怀孕时 丈夫睡了闺蜜(7/7):http://lady.shaoqun.com/m/a/42433.html
华为效应?亚马逊家用网络硬件美国品牌刷屏:https://www.ikjzd.com/home/121980

No comments:

Post a Comment