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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM