天天看點

Spring 中,@Autowired 和@Resource 的差別是什麼?Spring 中,@Autowired 和@Resource 的差別是什麼?

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;           

複制