1. 程式人生 > 遊戲資訊 >《公主連結攻略》日服老玩家の優妮千里眼!

《公主連結攻略》日服老玩家の優妮千里眼!

@autowired和@resource的區別

一. @autowired註解

@Autowired採取的預設策略為按照型別注入(by-type)。要求容器中一定要有這個型別的物件,如果沒有將會報錯,丟擲異常。也可以通過設定可以@Autowired(required = false),來告訴容器,如果沒有可以不注入。當容器中有多個相同型別的物件,會造成無法選擇具體注入哪一個的情況從而導致報錯,這個時候我們可以通過@Qualifier("beanname"),來指定裝配哪個物件。

二. @resource註解

@Resource可以設定by-name(按名稱)和by-type(按型別)來進行自動裝配。如果沒指定則預設按照ByName自動注入,如果匹配則自動裝配。如果沒有匹配,則按照by-type進行查詢,如果都沒查詢到,那麼則丟擲異常。

三. 總結

  • @Autowired是Spring的註解通過型別(type)來實現裝配Bean,也可以通過名稱(name)來裝配Bean(需要配合@Qualifier("beanname")使用)。依賴物件必須存在,如果要允許null值,可以設定它的required屬性為false @Autowired(required=false)。
  • @Resource是J2EE的註解是Java自已的東西使用@Resource可以減少程式碼和Spring之間的耦合。它可以通過by-type來實現裝配Bean,也可以by-name進行裝配,如果指定了則按照指定的進行裝配,如果都沒指定的話先by-name 後by-type 也可以同時指定by-name與by-type。