关于spring boot自动扫描的问题

       spring boot在启动时,会根据启动类(一般为application)的路径,将启动类及其以下路径的包扫描一遍,将添加了@Component、@Repository、@Service、@Controller注解的实现类生成添加进spring容器中。然而在spring boot整合mybatis框架时,如果不添加mapper相关的注解,spring是无法在容器中生成实现类的

       如在图中mapper,虽然添加了@Repository,且保证了该mapper在启动类的路径下,仍然无法在容器中找到实现类(故无法注入使用,因为他只是个接口,没有具体的实现类)。

       一般情况下,@Controller本身注解在类中,故可以直接加入容器。@Service虽然是个接口,但一般情况下实现类我们都自己实现了,故@Service的接口实现也能被加入spring容器。而在@Repository注解的mapper中,我们没有实现这个接口,故容器没有将其添加。

       所以一般情况下,需要我们在该mapper中添加注解@Mapper或者在启动类中加入mapper的相关扫描才可将mapper加入容器中。(因为看不懂,也不会看源码,故而只能靠查资料。)

加了上述注解之后,mabatis会在该目录下,找到mapper接口(看不懂源码,资料也未找到,不知这里的扫描会不会将包下的所有类或接口都扫到呢?),再解析xml,生成mapper接口对应的实现类,最终再由spring将其实现类加入容器中,方可通过注解实现这些mapper

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值