Spring - 註解 vs XML 哪個好?

  • Spring中,使用註解@Autowired進行注入好,還是使用xml配置進行注入好?

    • 先講結論,使用註解@Autowired注入比較好

    • 當時Spring開發的初衷是爲了解決類與類之間的強藕合new,所以當時提出了xml配置注入bean的方法,就是讓代碼只關注我需要什麼service,但此service是由哪個實現類提供的我並不關心

      • 使用xml的好處就是,實現類更換的時候並不需要去改動代碼,只要去改動xml配置,將注入的bean改成另一個實現類就可以了,如此可以達到類與類之間的松藕合

    • 但是到了Spring3.0之後,他們開始提出了使用@Autowired註解來進行bean的注入

      • 有的人可能會覺得,如果使用@Autowired、@Qualifier來注入,那麼假設我要改注入實現類的話,得去改java代碼中的@Qualifier,那這樣還是得改代碼,那這樣使用Spring注入和使用new,又有什麼差別?是不是還是使用xml比較好?

      • 事實上,使用註解確實會有這個問題沒錯,不過經過長時間的項目經驗下來,你會發現,我們其實很少會去改注入的實現類的 (天天改服務還要不要命?)

      • 而註解提供的好處卻是不少,像是簡化xml配置的冗長、使用註解比較直觀且容易、並且是類型安全的(compiler可以掃描註解,判斷注入的類型是否正確,但他掃描不了xml文件)

      • 因此就算使用註解@Autowired去改變注入的實現類比xml更困難,但他其他大量的優點足以掩蓋過這個缺點,這也是爲什麼Spring覺得使用註解配置比使用xml配置更好的理由

    • 所以到目前爲止(Spring4.0),雖然Spring官方本身沒有明說拋棄xml配置,不過事實上Spring已經轉往註解配置方向前進了,SpringBoot就是最好的例子

      • SpringBoot中只有一個properties文件負責配置一些不可避免的設定,像是數據庫連接、mvc模板配置....,除此之外沒有任何一個xml文件來定義bean,全部都是使用註解來配置

  • 註解 vs XML 優缺點比較

    • 註解

      • 優點

        • 簡化配置

        • 使用起來直觀且容易,提升開發效率

        • 類型安全

      • 缺點

        • 改變實現類比xml困難

    • xml

      • 優點

        • 類與類間的松藕合,容易擴展、更換

        • 對象間的關係一目瞭然

      • 缺點

        • 配置冗長,且還要額外多維護一份配置

        • 類型不安全,compile無法幫忙校驗,運行期纔會發現錯誤

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