type
status
date
slug
summary
tags
category
icon
password
@Resource有两个属性是比较重要的,分别是name和type,name属性解析为bean的名字,type解析为bean的类型,所以如果使用name属性,则使用byName的自动注入策略,而使用type属性则使用byType自动注入策略。
根据name属性装配
使用name属性配置,那么属性名称就没有意义了。
根据type属性装配
但是如果指定的名称不存在,但是属性名存在也可以注入成功(但课程中没有讲)
@Resource
如果什么也不写,只有@Resource,那么匹配的策略是,先使用byName进行匹配,再使用byType属性进行配置,如果都不成功,就会报错。
此时容器中没有userService400,所以会按照类型注入,但是此时现在容器中有三个此类型的对象:userService,userService200,userService300
所以结果是

image-20230212164904057
改正,可以指定其中一个UserService即可
结论
- 所以,在注入的时候尽量使用规范的属性名,因为ioc输入的时候,id名是按照类型的首字母小写注入的,对应属性名也就是驼峰命名法。
- @AutoWired官方不推荐使用,如果两个都可以使用,优先使用@Resource
此注解不推荐使用

image-20230212165629443