註解和XML的使用選擇

現在註解使用的越來越廣泛;它的主要好處是寫起來比xml要方便的多,但是它們的目的都是一樣的,元數據。

 

我的理解:

註解:是一種分散式的元數據,與源代碼緊綁定。

xml:是一種集中式的元數據,與源代碼無綁定。

 

因此註解和XML的選擇上可以從兩個角度來看:分散還是集中,源代碼綁定/無綁定。

 

註解的缺點:

1、很多朋友比如在使用spring註解時,會發現註解分散到很多類中,不好管理和維護;這個其實要藉助工具,我目前使用的是IDEA,它在這方面表現的非常好;當然現在還有Spring的STS,也是不錯的; 所以藉助工具,能解決這個問題;

2、註解的開啓/關閉必須修改源代碼,因爲註解是源代碼綁定的,如果要修改,需要改源碼,這個有這個問題,所以如果是這種情況,還是使用XML配置方式;比如數據源;

3、註解還一個缺點就是靈活性,比如在之前翻譯的Spring Framework 4.0 M1: WebSocket 支持;在實現複雜的邏輯上,沒有XML來的更加強大;註解就是要麼用,要麼不用,比如之前的jpa bean validation,要麼全,要麼沒;遇到這種情況很痛苦;

4、還一種就是約定大於配置,但是在處理一些複雜的情況下,註解還是需要的(如Spring的數據驗證/數據綁定註解很強大);

5、通用配置還是走XML吧,比如事務配置,比如數據庫連接池等等,即通用的配置集中化,而不是分散化,如很多人使用@Transactional來配置事務,在很多情況下這是一種太分散化的配置;

6、XML方式比註解的可擴展性和複雜性維護上好的多,比如需要哪些組件,不需要哪些;在面對這種情況,註解掃描機制比較遜色,因爲規則很難去寫或根本不可能寫出來;

 

 

註解的好處:

1、XML配置起來有時候冗長,此時註解可能是更好的選擇,如jpa的實體映射;註解在處理一些不變的元數據時有時候比XML方便的多,比如springmvc的數據綁定,如果用xml寫的代碼會多的多;

2、註解最大的好處就是簡化了XML配置;其實大部分註解一定確定後很少會改變,所以在一些中小項目中使用註解反而提供了開發效率,所以沒必要一頭走到黑;

3、註解相對於XML的另一個好處是類型安全的,XML只能在運行期才能發現問題。

 

註解也好,XML也好,我們還是需要一些開關/替換機制來控制特殊需求,以改變那種要麼全部 要麼沒有的方案。

 

還一種呼聲就是約定大於配置,這種方案可能在某些場景下是最優的,但是遇到一些複雜的情況可能並不能解決問題,所以此時註解也是一個不錯的方案。尤其在使用springmvc時,好處是能體會的出的。

 

不管使用註解還是XML,做的事情還是那些事情,但註解和XML都不是萬能的,滿足自己的需求且已一種更簡單的方式解決掉問題即可。

 

就像探討一下技術問題,很多人都帶有很強的個人喜好來評判一個東西的好壞,這種探討沒有任何意義,我們最終的目的是解決方案,所以我們應該探討的是能不能解決問題,能不能以更容易理解的方式解決問題,能不能更簡單的解決問題。

 

不管是約定大於配置、註解還是XML配置也好,沒有哪個是最優的,在合適的場景選擇合適的解決方案這纔是重要的。就像設計模式一樣:是對特定環境中重複出現的特定問題的一個經過前人驗證了的解決方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章