Spring Bean 定義繼承

suliver發表於2021-09-09

Bean 定義繼承

bean 定義可以包含很多的配置資訊,包括建構函式的引數,屬性值,容器的具體資訊例如初始化方法,靜態工廠方法名,等等。

子 bean 的定義繼承父定義的配置資料。子定義可以根據需要重寫一些值,或者新增其他值。

Spring Bean 定義的繼承與 Java 類的繼承無關,但是繼承的概念是一樣的。你可以定義一個父 bean 的定義作為模板和其他子 bean 就可以從父 bean 中繼承所需的配置。

當你使用基於 XML 的配置後設資料時,透過使用父屬性,指定父 bean 作為該屬性的值來表明子 bean 的定義。

例子

我們在適當的位置使用 Eclipse IDE,然後按照下面的步驟來建立一個 Spring 應用程式:

步驟 描述
1 建立一個名稱為 SpringExample 的專案,並且在建立專案的 src 資料夾中建立一個包 com.tutorialspoint
2 使用 Add External JARs 選項,新增所需的 Spring 庫,解釋見 Spring Hello World Example 章節。
3 在 com.tutorialspoint 包中建立 Java 類 HelloWorldHelloIndia 和 MainApp
4 在 src 資料夾中建立 Beans 配置檔案 Beans.xml
5 最後一步是建立的所有 Java 檔案和 Bean 配置檔案的內容,並執行應用程式,解釋如下所示。

下面是配置檔案 Beans.xml,在該配置檔案中我們定義有兩個屬性 message1 和 message2 的 “helloWorld” bean。然後,使用 parent 屬性把 “helloIndia” bean 定義為 “helloWorld” bean 的孩子。這個子 bean 繼承 message2 的屬性,重寫 message1 的屬性,並且引入一個屬性 message3

                                              

這裡是 HelloWorld.java 檔案的內容:

package com.tutorialspoint; public class HelloWorld {    private String message1;    private String message2;    public void setMessage1(String message){       this.message1  = message;    }    public void setMessage2(String message){       this.message2  = message;    }    public void getMessage1(){       System.out.println("World Message1 : " + message1);    }    public void getMessage2(){       System.out.println("World Message2 : " + message2);    } }

這裡是 HelloIndia.java 檔案的內容:

package com.tutorialspoint; public class HelloIndia {    private String message1;    private String message2;    private String message3;    public void setMessage1(String message){       this.message1  = message;    }    public void setMessage2(String message){       this.message2  = message;    }    public void setMessage3(String message){       this.message3  = message;    }    public void getMessage1(){       System.out.println("India Message1 : " + message1);    }    public void getMessage2(){       System.out.println("India Message2 : " + message2);    }    public void getMessage3(){       System.out.println("India Message3 : " + message3);    } }

下面是 MainApp.java 檔案的內容:

package com.tutorialspoint; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp {    public static void main(String[] args) {       ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");       HelloWorld objA = (HelloWorld) context.getBean("helloWorld");       objA.getMessage1();       objA.getMessage2();       HelloIndia objB = (HelloIndia) context.getBean("helloIndia");       objB.getMessage1();       objB.getMessage2();       objB.getMessage3();    } }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2370/viewspace-2807335/,如需轉載,請註明出處,否則將追究法律責任。

相關文章