Spring 学习笔记心得(四)XML继承

首先先引入继承Bean配置相关概念

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

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

● 子Bean也可以 覆盖 从父Bean继承过来的配置,父Bean可以作为配置模板,也可以作为Bean实例. 若只想把父Bean作为模板,可以设置的abstract属性为true,这样Spring将不会实例化这个Bean。

并不是元素里的所有属性都会被继承,比如: autowire,abstract等.。

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

那么这些概念是什么意思,下面小编将进行举例说明和解释

1.继承

1.1创建父类Animal

public class Animal {
	
    private String name;
    private String run;
    private int sleep;
       
         ... ( set()  get() toString() )

1.2创建Cat类继承Animal类

public class Cat extends Animal {

}

1.3创建springXML配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:http="http://www.springframework.org/schema/c"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-2.0.xsd
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

   <bean id="animal" class="cn.itcast.CSDN.domain.Animal" 
    p:name="Cat" p:run="I can skip ..." p:sleep="10"></bean>

</beans>

1.4测试实体类打印

ApplicationContext ctx = new ClassPathXmlApplicationContext("bean-application.xml");
        Animal animal = ctx.getBean(Animal.class);
        System.out.println(animal);

输出结果:Animal{name=‘Cat’, run=‘I can skip …’, sleep=10}

1.5bean中的abstract标签的使用,表明该类是抽象类,既然是抽象类,那就是不可以被实例化的,我们在前面bean的基础上添加abstract属性,并且设置对应的布尔值

    <bean id="animal" class="cn.itcast.CSDN.domain.Animal" 
    p:name="Cat" p:run="I can skip ..." p:sleep="10"
     abstract="true"></bean>

注意:如果在测试的过程中不需要这个属性但是却忘记注释掉了,会抛异常,看到这个异常就要联想到自己哪里可能没有注释掉

No qualifying bean of type 'cn.itcast.CSDN.domain.Animal' available

1.6 添加一个Bean,类型指向Cat,并且使用parent标签指向Animal

<bean id="cat" class="cn.itcast.CSDN.domain.Cat" parent="animal"></bean>
//执行并且打印
   Animal cat = ctx.getBean(Cat.class);
        System.out.println(cat);

        Cat cat2 = ctx.getBean(Cat.class);
        System.out.println(cat2);

测试输出结果:Cat{name=‘Cat’, run=‘I can skip …’, sleep=10}
Cat{name=‘Cat’, run=‘I can skip …’, sleep=10}

注意:CatBean这里仅仅是继承了Animal,小编并没有设置任何属性任何值,所以XML文件继承方式和JAVA类的继承方式是一致的

2.抽象bean不指向Class属性

2.1.创建AnimalBean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:http="http://www.springframework.org/schema/c"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-2.0.xsd
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="animal" abstract="true"></bean>

</beans>

2.2 创建CatBean继承AnimalBean

<bean id="cat2" class="cn.itcast.CSDN.domain.Cat"
 p:name="cat" p:sleep="20" p:run="I can run too ... " 
  parent="animal"></bean>

然后后面使用方式都是一致的,小编这里就不作多的说明了,如果小编有什么说错的地方,欢迎大家指正。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值