Spring中@Autowired與@Resource的區別
阿新 • • 發佈:2019-01-27
一、相同點
@Autowired與@Resource都用於注入bean
兩者都可以用在setter方法或直接用在欄位上。
二、 不同點
1、所屬不同
@Autowired由Spring提供,而@Resource由J2EE提供。Spring支援幾個由JSR-250規範定義的註解,@Resource註解便是其中之一。
2、裝配順序不同
@Autowired 預設按型別(Type)注入,而@Resource預設按名稱(Name)注入: @Resource 未使用name屬性指定名稱和未使用type屬性指定型別時預設按名稱(@Resource用在欄位上時以欄位名作為名稱,用在setter方法上時以屬性名作為名稱@Autowired 預設要求該依賴物件存在,可以通過設定required屬性為false以允許物件為null;@Autowired 預設按型別查詢匹配得Bean進行裝配,如果該型別存在多個物件則自動再按名稱,如果還找不到或有多個則會丟擲異常;也可以配合使用@Qualifier來指明哪個實現類的名稱。
@Autowired(required=false)@Qualifier("userService")
private UserService userService;