1. 程式人生 > >Spring的註解配置與XML配置之間的比較

Spring的註解配置與XML配置之間的比較

註釋配置相對於 XML 配置具有很多的優勢: 

它可以充分利用 Java 的反射機制獲取類結構資訊,這些資訊可以有效減少配置的工作。

如:使用 JPA 註釋配置 ORM 對映時,我們就不需要指定 PO 的屬性名、型別等資訊,如果關係表字段和 PO 屬性名、型別都一致,您甚至無需編寫任務屬性對映資訊——因為這些資訊都可以通過 Java 反射機制獲取。 

註釋和 Java 程式碼位於一個檔案中,而 XML 配置採用獨立的配置檔案,大多數配置資訊在程式開發完成後都不會調整,

如果配置資訊和 Java 程式碼放在一起,有助於增強程式的內聚性。而採用獨立的 XML 配置檔案,程式設計師在編寫一個功能時,往往需要在程式檔案和配置檔案中不停切換,這種思維上的不連貫會降低開發效率。

 

因此在很多情況下,註釋配置比 XML 配置更受歡迎,註釋配置有進一步流行的趨勢。Spring 2.5 的一大增強就是引入了很多註釋類,現在您已經可以使用註釋配置完成大部分 XML 配置的功能。 

註釋配置和 XML 配置的適用場合 

是否有了這些 IOC 註釋,我們就可以完全摒除原來 XML 配置的方式呢?答案是否定的。有以下幾點原因: 

註釋配置不一定在先天上優於 XML 配置。如果 Bean 的依賴關係是固定的,(如 Service 使用了哪幾個 DAO 類),這種配置資訊不會在部署時發生調整,那麼註釋配置優於 XML 配置;反之如果這種依賴關係會在部署時發生調整,XML 配置顯然又優於註釋配置,因為註釋是對 Java 原始碼的調整,您需要重新改寫原始碼並重新編譯才可以實施調整。

 

如果 Bean 不是自己編寫的類(如 JdbcTemplate、SessionFactoryBean 等),註釋配置將無法實施,此時 XML 配置是唯一可用的方式。 

註釋配置往往是類級別的,而 XML 配置則可以表現得更加靈活。比如相比於 @Transaction 事務註釋,使用 aop/tx 名稱空間的事務配置更加靈活和簡單。 

所以在實現應用中,我們往往需要同時使用註釋配置和 XML 配置,對於類級別且不會發生變動的配置可以優先考慮註釋配置;而對於那些第三方類以及容易發生調整的配置則應優先考慮使用 XML 配置。Spring 會在具體實施 Bean 建立和 Bean 注入之前將這兩種配置方式的元資訊融合在一起。

 

XML配置的優缺點: 

優點有: 

1. XML配置方式進一步降低了耦合,使得應用更加容易擴充套件,即使對配置檔案進一步修改也不需要工程進行修改和重新編譯。 

2. 在處理大的業務量的時候,用XML配置應該更加好一些。因為XML更加清晰的表明了各個物件之間的關係,各個業務類之間的呼叫。同時spring的相關配置也能一目瞭然。 

當然,有人會說,用XML配置,在大的業務量時候會使得XML檔案過大,不容易檢視。這一點我們完全可以利用業務分解書寫多個XML配置檔案就可以了。 

缺點有: 

配置檔案讀取和解析需要花費一定的時間,配置檔案過多的時候難以管理,無法對配置的正確性進行校驗,增加了測試難度。 

註釋配置的優缺點: 

優點有: 

1. 在class檔案中,可以降低維護成本,annotation的配置機制很明顯簡單 

2. 不需要第三方的解析工具,利用java反射技術就可以完成任務 

3. 編輯期可以驗證正確性,差錯變得容易 

4. 提高開發效率 

缺點有: 

1. 如果需要對於annotation進行修改,那麼要重新編譯整個工程 

2. 業務類之間的關係不如XML配置那樣容易把握。 

3. 如果在程式中annotation比較多,直接影響程式碼質量,對於程式碼的簡潔度有一定的影響