码迷,mamicode.com
首页 > 其他好文 > 详细

@repository的含义,并且有时候却不用写,为什么?

时间:2018-12-03 15:40:09      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:XML   iss   size   font   ring   分享   配置实现   osi   不用   

//最后发现是这样的:@repository跟@Service,@Compent,@Controller这4种注解是没什么本质区别,都是声明作用,取不同的名字只是为了更好区分各自的功能.下图更多的作用是mapper注册到类似于以前mybatis.xml中的mappers里.

技术分享图片

//也是因为接口没办法在spring.xml中用bean的方式来配置实现类吧(接口配不了),所以只能用注解或者mybatis.xml中扫描bean的方式来生成实现类吧

一,首先:@repository是用来注解接口,如下图:这个注解是将接口BookMapper的一个实现类(具体这个实现类的name叫什么,还需要再分析源码找找看)交给spring管理(在spring中有开启对@repository注解的扫描),当哪些地方需要用到这个实现类作为依赖时,就可以注入了.当然我们也可以主动给这个实现类命名,如下图

技术分享图片e

技术分享图片

二,为什么有时候我们不用@repository来注解接口,我们照样可以注入到这个接口的实现类呢?如下图,下图是在接口没有用

@repository注解的情况下,依然可以实现注入它的实现类.

技术分享图片

上面是在idea中报了红线警告,说找不到这个实现类,但依然是可以运行,没有问题(只是单纯的警告),而在myeclipse中,是连警告都没有的,运行完全没问题.这是因为如下图:

技术分享图片

是因为我们在mybatis的xml文件配置了上图这个bean,它会去将dao这个层中的mapper(也就是我们的接口)都生成实现类,然后交给spring管理(因为mybatis.xml文件我们最终还是导入了spring容器中),所以我们这里不对这些接口用@repository注解,也是一样可以用它的实现类,(这也是我们写项目时,有时感觉完全是没用到@repository注解的原因,因为没有什么必要)而idea报红线警告,可能是idea自己的原因,这个在我们对它对应的接口用@repository注解后,红线警告会消失,运行也完全没问题

@repository的含义,并且有时候却不用写,为什么?

标签:XML   iss   size   font   ring   分享   配置实现   osi   不用   

原文地址:https://www.cnblogs.com/yuyu666/p/10058202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!