Spring學習系列(一)被忽視的XSD文件


Spring是個JavaBean容器,相信大部分人在學習Spring時,首先接觸的就是如何在XML文件中配置JavaBean。
想要深入了解Spring配置文件的定義,搞清楚如何定義一個Bean,需要研究一下spring-beans.xsd。

1.XML相關知識准備

  • XML的約束模式有兩種:DTD/Schema。
  • DTD的作用是定義XML的合法構建模塊,它使用一系列的合法元素來定義文檔結構。
  • Schema是對XML文檔結構的定義和描述,其主要的作用是用來約束XML文件,並驗證XML文件有效性。
  • Spring1.0采用dtd定義XML,Spring2.0以后改用Schema定義XML。(如果遇到仍然采用dtd定義的xml文件大概是個老古董了)

2.spring-beans.xsd中對bean的解釋。

文件地址:http://www.springframework.org/schema/beans/spring-beans.xsd
本地路徑:spring-beans-4.3.5.RELEASE.jar!\org\springframework\beans\factory\xml\spring-beans-4.3.xsd

以下內容摘自spring-beans.xsd


Spring XML Beans Schema, version 4.3

Authors:Juergen Hoeller, Rob Harrop, Mark Fisher, Chris Beams(四位都是spring核心人員)



定義一種簡單一致的創建JavaBeans對象命名空間的方式。(<beans></beans>)

通過XmlBeanDefinitionReader(和DefaultBeanDefinitionDocumentReader)讀取,由Spring BeanFactory管理。

這種文檔類型被基於bean工廠的大部分Spring功能使用,包括web應用上下文。

這個文檔中的每一個"bean"定義一個JavaBean。
通常這些bean實例由JavaBean的屬性和(或)構造器參數明確定義。

一個bean實例可以是"單例模式"的共享實例或者是"原型模式"的獨享實例。更多的范圍(scopes)由擴展的bean工廠提供,例如在web環境中。

支持beans之間的引用,意味着設置JavaBean的屬性或者構造參數時,可以引用同一個工廠(或祖先級工廠)的其他bean。

內部bean定義可以作為一種可選的bean引用,這種內部beans沒有獨立的生命周期,通常匿名嵌套對象共享其容器bean的作用范圍。

支持lists,sets,maps,java.util.Properites作為bean屬性或者構造參數的數據類型。

 


以下列舉一些主要的標簽
<beans>是根節點,它的一些屬性例如:

  • profile

在嵌套的<beans>中指定不同的環境的配置參數,

可以在上下文context-param中設置profile.default,profile.active切換不同環境的配置,或使用@Profile,@ActiveProfiles指定配置

  • default-lazy-init

此參數表示延時加載,即在項目啟動時不會實例化注解的bean,除非啟動項目時需要用到,未實例化的注解對象在程序實際訪問調用時才注入調用

  • default-merge

在繼承關系時在子類中合並父類的值

  • default-autowire

是否自動注入,如果未設置需要顯示的聲明ref引入

  • default-autowire-candidates

自動注入bean的候選者

  • default-init-method,初始化方法
  • default-destroy-method,銷毀方法

<bean>子節點的一些屬性例如:

  • id,屬性是bean唯一的身份標識。在同一個<beans>下最多只能出現一次
  • name
  • class
  • .....

3.思考總結

  由於剛學習Spring,以上舉例列出的<beans>的標簽和使用,都是在網絡中找的解釋,認識不夠深刻。看來只參照XSD是不夠的,想要深入理解還是要參考官方文檔。

作為深入學習Spring的第一節課,也為深入學習Spring提供了思路:面向《官方文檔》學習


免責聲明!

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



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