关于@Autowired注解的注入
老师,@Autowired这个注解不是说默认按类型注入么,视频中的代码注入的时候是注入一个接口,为什么可以在下面直接调用接口的方法啊?不是应该声明个接口的实现类然后用@Autowired来注入才能调用里面实现的方法么?
正在回答
1、如果多个实现类实现了同一个接口的话,这个时候用我问题中图片的接口声明方式来注入,注入的又是哪个实现类的实例对象呢?
答:
如果同一个接口有多个实现类的话,同学就不能单独的用@Autowired来注入了,可以在注解后边写上名字,用@Autowired配合 @Qualifier("orderDaoImpl")来注入了 或者用@Resource(name=“orderDaoImpl ”)
2、注入的时候,这个属性不可以是OrderServiceImap 而是它的接口OrderService
3、关于同学说的第三条,同学这里可以当做一个知识点记忆,就是注入的时候,接收的要是接口类型,如果是是实现类的不可以的。会报错。这里的用法就之前学习的多态。同学这里不容易理解的话请先记住即可呦。
4、这里同学可以不必纠结,这里老师说的相对比较深一点,解释到了aop的增强,我们想要用增强的后的时候,必然要用增强后的对象呦,而不会使用原来的。不然我们为什么要增强呢?
5、如果用实现类接收的话应该是会报错的呦。这里涉及到的知识比较底层,同学记住就可以,用接口来接收哦。
6、如果有多个实现类,则用老师说的第一问中的方法注入,注入的是哪个实现类,则就调用的是哪个里边的实现方法。也体现了多态。
就像我们做的第一阶段的多态的作用,用接口 调用,给它注入的哪个实现类调用的就是哪个实现类的方法。
7、建议同学如果贴代码或者有多条的话,可以在我要回答中提问呦,回复中会失去格式
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星