古古的後端筆記
後端技術專欄
Spring Boot 零基礎入門
自媒體 & 敗家專區
軟體工程師的自媒體之路
所有文章
關於我
Spring Boot - 注解 vs XML 哪個好?
古古
2018/07/09
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
優點 : 類與類間的松耦合,容易擴展、更換、對象間的關係一目了然
缺點 : 配置冗長,且還要額外多維護一份配置,類型不安全,compiler 無法幫忙校驗,運行期才會發現錯誤