自动装配的问题

自动装配的问题

@Autowired
private UserService userService;


按照userService 去寻找类型的bean进行注入,因为userService并没有实例化, 所以它寻找的类型是userService的实现类的bean吧,如果这个接口类型下有多个实现类的bean,则可以通过名字寻找注入吧。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿园 2021-06-08 15:22:06

同学你好

1、是的,@Autowired默认按照类型进行注入,如果存在两个相同Bean类型相同,则按照名称注入

2、同学的理解是对的

祝学习愉快~

  • 提问者 rock221 #1

    请问老师, 

    UserService

    这个接口并没有被ioc创建,但是它的实现类被创建了,  所以它的实现类也是这个类型的吧。所以按照类型可以找到,如果存在多个实现类,则通过名字去寻找。 

    2021-06-08 15:28:46
  • 好帮手慕阿园 回复 提问者 rock221 #2

    是的,同学的理解是正确,继续加油呐

    祝学习愉快~

    2021-06-08 18:15:43
  • 老师,我看了你的回复@AutoWired如果是写在属性上则是按类型去自动注入,如果发现两个相同类型的则会报错,此时采用@primary来解决类型注入的错误


    我记得之前spring的课程中视频中老师有讲过优先使用@Resource注解自动注入,@Resource注解作用在属性上则会按名称去注入,如果没有匹配则按类型去注入

    2021-07-17 18:08:25
rock221 提问者 2021-06-08 12:34:55

追加提问:

关于

@MapperScan(basePackages = "com.imooc.mall.model.dao")

这个配置:

首先程序正常运行下,会扫描所有的类。 包括了dao层的接口,但是只是识别,并不知道它是mapper类型的接口,也就是要与mappers的xml绑定的接口, 所以需要这个注解来声明, 当扫描指定的包下的类或者接口是属于mapper的,然后会自动关联xml对吗? 和@Repostory注解没有很大的关系, 这个注解只是说明在ioc初始化的时候对类进行实例化,说明这是个dao层的类。其次,这个注解和mvc的mapper扫描器比较类似,区别是mapper扫描器会自动创建mapper接口的实例化不需要+@repository注解, 但是这里需要加。 我理解的对吗?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师