bean继承

来源:互联网 发布:淘宝买家手机号提取 编辑:程序博客网 时间:2024/04/28 00:51

bean定义继承

修改原先的bean

package com.yangjun.bean;import org.springframework.beans.factory.DisposableBean;import org.springframework.beans.factory.InitializingBean;public class HelloWorld implements InitializingBean, DisposableBean {    private String message;    private String address;    public void setMessage(String message) {        this.message = message;    }    public void getMessage() {        System.out.println("Your Message : " + message);    }    public void getAddress() {        System.out.println("Your Address : " + address);    }    public void setAddress(String address) {        this.address = address;    }    @Override    public void afterPropertiesSet() throws Exception {        // TODO Auto-generated method stub        System.out.println("正在准备");    }    public void init() {        System.out.println("正在生成");    }    public void destroy() {        // TODO Auto-generated method stub        System.out.println("正在销毁");    }}

创建一个新的bean

package com.yangjun.bean;import org.springframework.beans.factory.DisposableBean;import org.springframework.beans.factory.InitializingBean;public class HelloWorld01 implements InitializingBean, DisposableBean {    private String message;    private String address;    private String sex;    public void getMessage() {        System.out.println("Your Message : " + message);    }    public void setMessage(String message) {        this.message = message;    }    public void getAddress() {        System.out.println("Your Address : " + address);    }    public void setAddress(String address) {        this.address = address;    }    public void getSex() {        System.out.println("Your Sex : " + sex);    }    public void setSex(String sex) {        this.sex = sex;    }    @Override    public void afterPropertiesSet() throws Exception {        // TODO Auto-generated method stub        System.out.println("正在准备子类01");    }    public void init() {        System.out.println("正在生成子类01");    }    @Override    public void destroy() throws Exception {        // TODO Auto-generated method stub        System.out.println("正在销毁子类01");    }}

修改Bean.xml文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">    <bean id="helloWorld" class="com.yangjun.bean.HelloWorld"        init-method="init" destroy-method="destroy">        <property name="message" value="杨峻!" />        <property name="address" value="武汉!" />    </bean>    <bean class="com.yangjun.postprocessor.BPP01" />    <bean id="helloWorld01" class="com.yangjun.bean.HelloWorld01" parent="helloWorld">        <property name="message" value="杨峻" />        <property name="sex" value="男" />    </bean></beans>

修改MainApp.java

        AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");        HelloWorld objA = (HelloWorld) context.getBean("helloWorld");        objA.getMessage();        objA.getAddress();        HelloWorld01 objA01 = (HelloWorld01) context.getBean("helloWorld01");        objA01.getMessage();        objA01.getAddress();        objA01.getSex();        context.registerShutdownHook();

运行程序后:
这里写图片描述

可以看到在xml中,虽然我没有在子类中定义address,但是值还是传过来了,我也没有指定子类的init-method方法和destroy-method,但是都继承了父类的。

因此,可以在xml里面定义一个抽象的,不指定类的属性,只指定带 true 值的抽象属性

   <bean id="beanTeamplate" abstract="true">      <property name="message" value="杨峻!"/>      <property name="address" value="武汉!"/>      <property name="sex" value="男!"/>   </bean>

然后让其他的bean去继承就可以了。

这里总结说一下,bean的继承不是在Java里面去继承,而是在xml里面继承,虽然xml里面子类不需要把所有的属性都声明出来,但是在Java里面必须要将父类的属性生命出来。

0 0
原创粉丝点击