Spring里面bean的依赖和继承

Posted 陈彦斌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring里面bean的依赖和继承相关的知识,希望对你有一定的参考价值。

继承

  • bean继承:两个类之间大多数的属性都相同,避免重复配置,通过bean标签的parent属性重用已有的Bean元素的配置信息
  • 继承指的是配置信息的复用,和java类的继承没有关系

video.java(父类

package net.cybclass.sp.domain;

public class Video {
    private int id;
    private String title;
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

Video2.java(子类)

package net.cybclass.sp.domain;

public class Video2 {
    private int id;
    private String title;
    private String summary;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    @Override
    public String toString() {
        return "Video2{" +
                "id=" + id +
                ", title=\'" + title + \'\\\'\' +
                ", summary=\'" + summary + \'\\\'\' +
                \'}\';
    }
}

applicationContext.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.xsd">
    <bean id="video" class="net.cybclass.sp.domain.Video">
        <property name="id" value="8"></property>
        <property name="title" value="SpringBoot课程专题"></property>
    </bean>
    <bean id="video2" class="net.cybclass.sp.domain.Video2" parent="video">
        <property name="summary" value="这个是summary"></property>
    </bean>
</beans>

app.java

package net.cybclass.sp;

import net.cybclass.sp.domain.Video;
import net.cybclass.sp.domain.Video2;
import net.cybclass.sp.domain.VideoOrder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class app {
    public static void main(String[] args) {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
//        VideoOrder video=(VideoOrder) applicationContext.getBean("videoOrder");
//        System.out.println(video.getVideo());

        Video2 video=(Video2) applicationContext.getBean("video2");
        System.out.println(video);
    }
}

验证

依赖关系

depends-on

<?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.xsd">
    <bean id="video" class="net.cybclass.sp.domain.Video">
        <property name="id" value="8"></property>
        <property name="title" value="SpringBoot课程专题"></property>
    </bean>
    <bean id="video2" class="net.cybclass.sp.domain.Video2" parent="video">
        <property name="summary" value="这个是summary"></property>
    </bean>
    <!--设置两个bean的关系,video要先于videoOrder实例化-->
    <bean id="videoOrder" class="net.cybclass.sp.domain.VideoOrder" depends-on="video">
        <property name="id" value="8"></property>
        <property name="outTradeNo" value="12312"></property>
        <property name="video" ref="video"></property>
    </bean>
</beans>

 

以上是关于Spring里面bean的依赖和继承的主要内容,如果未能解决你的问题,请参考以下文章

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Spring之Bean定义继承和依赖注入

bean之间的继承和依赖关系

Spring入门第七课

Spring学习--Bean 之间的关系

spring的继承与依赖