欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring----学习(3)----bean 之间的关系:继承 && 依赖

程序员文章站 2024-03-15 10:56:41
...

继承 Bean 配置

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

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

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

  1.4 Bean 可以作为配置模板, 也可以作为 Bean 实例. 若只想把父 Bean 作为模板, 可以设置 <bean> abstract 属性为 true,

        这样 Spring 将不会实例化这个 Bean

<!-- 抽象bean:bean的 abstract属性被设置为true,
   这样的bean不能被IOC容器实例化,只用来被继承
   若一个bean的class属性没有指定,他只能是一个抽象bean  
-->
  <bean id="address1" p:city="beijing" p:street="1" abstract="true">
  </bean>
  <bean id="address2" class="com.lishenhuan.beans.autowrie.Address" p:street="2" parent="address1">
  </bean>

 

public static void main(String[] args) {
    ApplicationContext app = new ClassPathXmlApplicationContext(
    		"beans-relation.xml");
    //Address address1 = (Address) app.getBean("address1");
    //System.out.println(address1);
    Address address2 = (Address) app.getBean("address2");
    System.out.println(address2);
}

  1.5  并不是 <bean> 元素里的所有属性都会被继承. 比如: autowire, abstract .

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

2.依赖 Bean 配置

    2.1 Spring 允许用户通过 depends-on 属性设定 Bean 前置依赖的Bean

          前置依赖的 Bean 会在本 Bean 实例化之前创建好

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

<bean id="car" class="com.lishenhuan.beans.autowrie.Car" p:brand="hah" p:price="66"></bean>
<bean id="person" class="com.lishenhuan.beans.autowrie.Person"
     p:name="haha" p:address-ref="address2"  depends-on="car"></bean>