天天看點

@Autowired注解和@Resource注解

不對的地方請各位大佬不吝賜教!
## 注解說明
@Autowired:自動裝配,通過屬性的類型,名字
可以直接寫在屬性的上邊使用,可以省略set方法
預設按照byType進行裝配,當xml檔案中存在多個相同類型的bean會根據byName進行裝配
有一個required屬性,當此屬性為false時,可以在xml檔案中不寫bean

@Qualifier:該注解為@Autowired的配套使用注解,當xml檔案中一個類型的bean存在多個時,可以使用此注解通過id指定使用哪一個bean

@Resource:自動裝配,通過屬性的類型,名字。可以寫在屬性和set方法上。寫在屬性上時,可以省略set方法。

Spring将@Resource注解的name屬性解析為bean的id,而type屬性則解析為bean的class類型。是以如果使用name屬性,則使用byName的自動注入政策,
而使用type屬性時,則使用byType自動注入政策。如果name和type兩個屬性都不指定,這時将通過反射機制使用byName自動注入政策。
預設按照byName進行裝配,當xml檔案中存在相同類型的bean會根據byType進行裝配。
@Resource裝配順序:

1.如果同時指定了name和type兩個屬性,則在Spring的xml檔案中按照name和type查找唯一确定的bean進行裝配,找不到則抛出異常
2.如果隻指定了name屬性,則在Spring的xml檔案中按照name查找唯一确定的bean-id進行裝配,找不到則抛出異常
3.如果隻指定了type屬性,則在Spring的xml檔案中按照type查找唯一确定的bean進行裝配,找不到或者存在多個類型相同的bean都會抛出異常
4.如果name和type兩個屬性都沒有被指定,則自動按照byName在Spring的xml檔案進行查找裝配;如果沒有比對到,則按照byType進行裝配,如果比對
則自動裝配,沒有則抛出異常