@Resource有一個name屬性,該屬性值為所要注入的Bean實例的id,類似於<property.../>元素的ref屬性,不過在spring中允許省略name屬性值,省略后在以下情況中代表不同的行為
- 注解標注set方法時省略name屬性,如setXXX(),則name值默認為xXX,去掉“set”,首字母小寫。
- 注解直接標注變量時省略name屬性,則那么name值默認與所標注變量名相同。
值得注意的是:如@Resource省略name屬性后,按其默認規則沒有找到所需要注入的Bean時,則采用byType的方式尋找,即尋找與所標注set方法參數類型或所標注變量類型相匹配的Bean,如有唯一匹配則直接注入,如有多個匹配,則拋出異常。