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


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

編輯

在昨天發布的文章《spring boot基於注解方式配置datasource》一文中凱哥簡單的對xml配置和注解配置進行了比較。然后朋友看到文章后,就問:那你說說這兩種區別。

編輯

額,說真的,還真把凱哥給問蒙圈了。本文來源:凱哥Java【kaigejava】

凱哥當時就回答:注解的方便。如果再深入呢?還真說不明白。

是啊,現在都在說注解好,但是注解和xml比較起來有哪些優點呢?xml又為什么不好呢?有沒有深入思考過么?以下內容是凱哥從網上找的並加以理解的。

想要弄清楚這個,我們先來看看Xml.

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

我們就來看看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配置概括:寫起來比較靈活、修改方便,但是寫和維護麻煩

大家還有什么更好的理解?歡迎分享出來


免責聲明!

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



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