Spring 中,@Autowired 和@Resource 的差別是什麼?
首先,@Resource 是 JSR-250 标準的注釋,不屬于 Spring 中的标準注解,而@Autowired 屬于 Spring 中的注解。
@Autowired 與@Resource 都可以用來裝配 bean. 都可以寫在字段上, 或寫在 setter 方法上。
不同在于:
@Autowired 預設按類型裝配(byType),如果要按名稱裝配的話,必須和@Qualifier 注解一起使用。
@Autowired()
@Qualifier("myBean")
private MyBean myBean;
複制
@Resource,預設按名稱進行裝配(byName),通過 name 屬性設定名稱,如果沒有設定 name 屬性,則預設取字段名名稱進行查找。如果還是找不到名稱,則會按照類型進行裝配。需要注意的是,如果 name 屬性被設定了,那麼必須是按照名稱進行裝配。
@Resource("myBean")
private MyBean myBean;
複制