2013-10-07 18 views
10

我開始學習Spring文檔。我碰到過parent屬性的解釋,確實使用parent兩個bean之間的屬性相當於這些類之間的繼承關係嗎?bean標記的父屬性是否等於Java中的繼承?

如果是這樣,如何執行方法覆蓋?此外,我還看到在某些情況下,在XML配置文件中使用parent屬性,在bean類中使用extends關鍵字。是否需要指定兩個彈簧才能實現繼承?

+4

http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/htmlsingle/#beans-child-bean-definitions解釋了這一切。 –

回答

19
  • 在春天,在bean配置parent表示configuration inheritance並沒有涉及到Java繼承。
  • configuration inheritance節省了大量代碼,因爲您不必重複使用XML代碼。與屬性

    Class MyBean { 
        attrib1 
        attrib2 
        attrib3 
        attrib4 
    } 
    

例如,你有以下豆豆的一個實例說bean1只需要attrib1attrib2而另一個說bean2實例需要所有四個屬性。

讓配置這兩個豆

<bean id="bean1" class="MyBean"> 
    <property name="attrib1" value="val1" /> 
    <property name="attrib2" value="val2" /> 
</bean> 

<bean id="bean2" parent="bean1"> 
    <property name="attrib3" value="val3" /> 
    <property name="attrib4" value="val4" /> 
</bean> 

注意bean2只需要配置attrib3attrib4。另外兩個屬性繼承bean1

要回答你的問題:

是否需要爲了實現 繼承指定兩個彈簧?

不像前面提到的那樣,這不像java繼承一樣。

+0

感謝您的回覆Santosh.But現在我注意到Deinum提到的下面鏈接中的一點:「子bean定義繼承了構造函數參數值,屬性值和父類的方法覆蓋,並且可以添加新值」。那麼,使用父屬性支持方法重寫? –

+0

正如我所提到的,Spring配置中的'parent'屬性和Java繼承之間沒有聯繫,因此覆蓋了方法。無論該bean是否具有父屬性,配置的bean將擁有所有方法(包括繼承,重寫)。 – Santosh

5

不......他們彼此沒有關係。

父bean定義可以被認爲是其他bean的模板的一種形式(不必有任何關係)。假設你有3個bean共享/需要一個用戶名/密碼/ url配置,你可以創建一個定義所有這些屬性的父bean。這減少了您的配置工作量(您不必在所有的bean定義中複製屬性)。

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-child-bean-definitions給出了一個很好的概述。