SSH笔记-依赖、继承bean的配置

1、bean配置的继承关系
① 通过parent属性继承相同类的bean的配置,被继承的是父bean,继承的是子bean
② 子bean会从父bena中继承配置,包括父bean的属性和配置值
③ 子bean可以通过赋值来覆盖继承过来的配置
④ 父类使用 abstract=”true”时,不能被IOC容器实例化,只用于被继承配置(属性和值)
⑤ 如果一个bean没有指定class,则必须是一个抽象bean
⑥ 作用:使当前bean获取到父bean的配置属性

2、bean配置的依赖关系
① 使DependsBean依赖于RelationBean,如果DependsBean(dependsBean)缺少RelationBean的bean(relBeanDe)就会报错
② 如果依赖多个bean,可以通过都搞后空格配置depends-on的值
③ 作用:当前的bean中可以出现被依赖bean的属性或者配置参数

3、文件
①TestRelation.java:测试类
②DependsBean.java:测试继承关系的类
③RelationBean.java:测试依赖关系的类
④relationContext.xml:配置文件

4、TestRelation.java

package com.demo.sshtest.relation;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestRelation {

    public static void main(String[] args) {
        relation();
        depends();
    }
    public static void relation(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("relationContext.xml");
        RelationBean relationBean = (RelationBean)applicationContext.getBean("relBean");
        System.out.println(relationBean);
        relationBean = (RelationBean)applicationContext.getBean("relBean2");
        System.out.println(relationBean);

        RelationBean relationBeanAbs = (RelationBean)applicationContext.getBean("relBean3");
        System.out.println(relationBeanAbs);
    }
    public static void depends(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("relationContext.xml");
        DependsBean dependsBean = (DependsBean)applicationContext.getBean("dependsBean");
        System.out.println(dependsBean);
    }
}

5、DependsBean.java

package com.demo.sshtest.relation;

public class DependsBean {
    private Integer id;
    private String name;
    private RelationBean relationBean;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public RelationBean getRelationBean() {
        return relationBean;
    }
    public void setRelationBean(RelationBean relationBean) {
        this.relationBean = relationBean;
    }
    @Override
    public String toString() {
        return "DependsBean [id=" + id + ", name=" + name + ", relationBean=" + relationBean + "]";
    }

}

6、RelationBean.java

package com.demo.sshtest.relation;

public class RelationBean {
    private Integer id;
    private String name;
    private String password;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "RelationBean [id=" + id + ", name=" + name + ", password=" + password + "]";
    }
}

7、relationContext.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"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">

    <!-- bean配置的继承关系
    1、通过parent属性继承相同类的bean的配置,被继承的是父bean,继承的是子bean
    2、子bean会从父bena中继承配置,包括父bean的属性和配置值
    3、子bean可以通过赋值来覆盖继承过来的配置
    4、父类使用 abstract="true"时,不能被IOC容器实例化,只用于被继承配置(属性和值)
    5、如果一个bean没有指定class,则必须是一个抽象bean
    6、作用:使当前bean获取到父bean的配置属性
    -->
    <!-- 父bean -->
    <bean id="relBean" class="com.demo.sshtest.relation.RelationBean"
        p:id="1" p:name="AA" p:password="666"></bean>
    <bean id="relBeanAbs" p:id="2" p:name="aa" p:password="111" abstract="true"></bean>
    <!-- 子bean -->
    <bean id="relBean2" p:password="777" parent="relBean"></bean>
    <bean id="relBean3" class="com.demo.sshtest.relation.RelationBean" parent="relBeanAbs"></bean>

    <!-- bean配置的依赖关系
    1、使DependsBean依赖于RelationBean,如果DependsBean(dependsBean)缺少RelationBean的bean(relBeanDe)就会报错
    2、如果依赖多个bean,可以通过都搞后空格配置depends-on的值
    3、作用:当前的bean中可以出现被依赖bean的属性或者配置参数
    -->
    <bean id="relBeanDe" class="com.demo.sshtest.relation.RelationBean"
        p:id="5" p:name="rr" p:password="1q2w3e"></bean>
    <bean id="relBeanDe2" class="com.demo.sshtest.relation.RelationBean"
        p:id="5" p:name="rr" p:password="1q2w3e"></bean>
    <bean id="dependsBean" class="com.demo.sshtest.relation.DependsBean"
        p:id="9" p:name="yy" depends-on="relBeanDe,relBeanDe2"></bean>
</beans>

8、注意事项:
①bean配置的继承关系时,要先配置父类,再在配置子类的时候用parent属性关联父类,调用的时候调用父类
②bean配置的依赖关系时,要先配置bean,然后配置依赖bean,并使用depend-on关联之前配置好的bean,调用的是依赖bean

9、项目目录
项目目录

10、demo
https://download.csdn.net/download/qq_22778717/10470301

猜你喜欢

转载自blog.csdn.net/qq_22778717/article/details/80641372