@Resource有一个name属性,该属性值为所要注入的Bean实例的id,类似于<property.../>元素的ref属性,不过在spring中允许省略name属性值,省略后在以下情况中代表不同的行为
- 注解标注set方法时省略name属性,如setXXX(),则name值默认为xXX,去掉“set”,首字母小写。
- 注解直接标注变量时省略name属性,则那么name值默认与所标注变量名相同。
值得注意的是:如@Resource省略name属性后,按其默认规则没有找到所需要注入的Bean时,则采用byType的方式寻找,即寻找与所标注set方法参数类型或所标注变量类型相匹配的Bean,如有唯一匹配则直接注入,如有多个匹配,则抛出异常。