【架構】【基礎】Spring教程


Spring注解配置和xml配置優缺點比較

就目前Java web 開發應用中都能見到用xml作為配置的身影。在常用的框架中如:struts、spring mvc、hibernate、mybites等這些框架中(早期版本表現更為突出)都有xml配置。

Xml優點

1:xml是集中式的元數據,不需要和代碼綁定的;

在我們開發中,xml配置文件和代碼類是區分開的。不需要綁定到代碼中

2:使用xml配置可以讓軟件更具有擴展性;

比如,我們在spring中,我們不想使用接口而是想用接口的實現類,這個時候只需要修改xml配置中bean的class值就可以了。

3:對象之間的關系一目了然;

比如,我們在基於xml配置讀取配置信息,如下圖:


從xml結構中,我們就可以看出,在popertyPlaceholderConfigure類里面有個locations的屬性,而且是list集合。

再比如,使用xml配置數據源的是:

 

DataSource對象的屬性一目了然。

4:xml定義:可擴展標記語言,標准通用標記語言的子集,簡稱XML。

從這個定義中我們可以發現,xml最大的優勢就在於,開發者(程序員)能夠為軟件量身定做使用的標記,使得xml更通俗易懂;

5:成熟的校驗機制,來保證正確。可以使用Schema或者是DTD來對xml的正確性進行校驗。

6:基於xml配置的時候,只需要修改xml即可,不需要對現有的程序進行修改。

7:容易與其他系統進行數據交互。數據共享方便

Xml缺點

雖然上面列出了很多優點,但是xml也有缺點

1:應用程序中如果使用了xml配置,需要解析xml的工具或者是是第三方類庫的支持;

2:解析xml的時候必然會占用資源,勢必會影響到應用程序的性能;

以java為例,無論是將xml一次性裝置到內存中,還是一行一行讀取解析的,都會占用資源的。

3:xml配置文件過多,會導致維護變得困難

4:在程序編譯期間無法對其配置項的正確性進行驗證,只能在運行期發現。

5:出錯后,排錯變得困難。往往在配置的時候,一個手誤就會出現莫名其妙的錯誤(雖然事出必有妖,但是排查真難);

比如,xml配置bean信息的時候,如果class的值帶有空格,這種不好檢查的,是比較麻煩的。排查起來很費事。

6:開發的時候,既要維護代碼又要維護配置文件,使得開發的效率降低;

7:代碼與配置項之間有時候會存在很多“潛規則”.改變了任意一方,都有可能影響到另一方的使用。這是個大坑

比如:自定義的標記,如果其他開發不清楚這些的話,修改了無論是代碼還是xml的配置,都會導致程序不能正常運行。

8:開發工具對xml的驗證支持的不是很好。

比如idea,對xml正確性,如果是自定義的,驗證就不是很好。

說完xml的優缺點,我們在來看看注解的優缺點

注解優點

1:注解的解析可以不依賴於第三方庫,可以之間使用Java自帶的反射

2:注解和代碼在一起的,之間在類上,降低了維護兩個地方的成本

3:注解如果有問題,在編譯期間,就可以驗證正確性,如果出錯更容易找

4:使用注解開發能夠提高開發效率。不用多個地方維護,不用考慮是否存在“潛規則”

注解缺點

1:修改的話比較麻煩。如果需要對注解進行修改的話,就需要對整個項目重新編譯

2:處理業務類之間的復雜關系,不然xml那樣容易修改,也不及xml那樣明了

3:在程序中注解太多的話,會影響代碼質量,代碼簡潔會有影響

4:如果后來的人對注解不了解,會給維護帶來成本

5:注解功能沒有xml配置齊全

簡單總結下兩者優缺點比較

注解優點:

  • 簡化配置
  • 使用起來直觀且容易,提升開發的效率
  • 類型安全,容易檢測出問題

注解缺點:

  • 修改起來比xml麻煩
  • 如果不項目不了解,可能給開發和維護帶來麻煩

Xml優點:

  • 把類與類之間松解偶;修改方便;容易擴展
  • 容易和其他系統進行數據交互
  • 對象之間的關系一目了然

Xml缺點:

  • 配置冗長,需要額外維護;影響開發效率
  • 類型不安全,校驗不出來,出錯不好排查
  • 注解簡單概括:寫起來比較簡單、方便,看起來也簡潔,但是修改麻煩
  • Xml配置概括:寫起來比較靈活、修改方便,但是寫和維護麻煩

 

Springboot啟動問題

加載數據庫源

深入Spring Boot:怎樣排查 Cannot determine embedded database driver class for database type NONE

 

 


免責聲明!

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



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