spring註解與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配置也好,沒有哪個是最優的,在合適的場景選擇合適的解決方案這才是重要的。就像設計模式一樣:是對特定環境中重複出現的特定問題的一個經過前人驗證了的解決方案。