最近开学,我们专业开设了一门JAVA EE的课程,作为初学者,我学的比较吃力,因为以前的一些课我学的也不怎么样,当然这门课跟其他可也没有那么多的联系,之所以说这些只是表明一下自己初学者的身份,如果有错误,欢迎各位大佬指明!
@Autowired注解跟@Resource之间的区别联系,我这里没啥说的,有很多人都讲了,我比较费劲的是@Autowired注解的按照类型查找注入的方式
好比这样
我记得书上写的是默认生成的是类名的小写accountController对吧
但是如果像是下面这个图显示的那样那他容器中默认生成的是accountController还是所accountDao呢?
我在网上搜素了一下(不得不吐槽一下必应跟百度搜索结果相差还是挺大的)
后来找到这个
他的意思是容器获得的都是接口的实现类,然后我就觉得@Autowired会在容器里搜索UserService类型的实例,但是在上面这个截图中只有接口的实现类才被容器实例化了,而且代码没问题,我奇怪的只是为什么@Autowired根据UserService类型搜索,却反而能找到接口的实现类UserServiceImple,难道说实现类的类型跟它所实现的接口类类型是一样的?还是说实现类存到容器中的实例默认名就是接口userService?
本来我都认为是后者了,直到我刷到了这位大哥的帖子
spring注解@Service,@Repository写在接口上还是接口的实现类上的有关测试_@service注解写在接口还是实现类-CSDN博客
容器根据AccountServiceImpl查找的时候查找到了实现类,证明后者的推测是错误的
然后我又刷到了另一位大哥的帖子
★spring@Autowired注解原理,通俗易懂(笔记)_autowired(request=false)_你在狗叫什么、的博客-CSDN博客
????我擦,搞错了,大哥举的例子是继承而不是接口,好吧
有没有哪位大佬指点指点我啊
spring MVC——Spring的@Autowired注解为什么用在接口上 (转载)_小白龙白龙马的博客-CSDN博客
有找到一位大哥的文章分享,有需要的小伙伴可以看看
欧克欧克,我好像找到具体解释了
看他最后一句话,是不是可以理解为接口的实现类可看作接口类,但接口类不能看做实现了,通了,这样解读的话一切都通了,爽