Java继承中的方法调用,你搞清楚了吗

引入正题

我们就从Mybaits和Spring整合的一个类讲解吧, 当时我也有点懵

<!-- Mapper 扫描器  2.spring-mybaits整合-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 扫描 cn.wmyskxz.mapper 包下的组件 -->
        <property name="basePackage" value="com.tx.mapper"/>
    </bean>

我们直接看这个类的源码:该类实现了

BeanDefinitionRegistryPostProcessor 接口 所以根据SpringBean的生命周期,肯定会调用
postProcessBeanDefinitionRegistry方法,我们直接看该类的这个方法

 后置处理器方法:

ClassPathMapperScanner类 调用了该类的scan方法

进入正题,Scan方法的调用过程

 下面我来补充一张类图,不然很容易搞甍的 ,我们

        上面的对象是子类对象:ClassPathMapperScanner        

                                     父类:ClassPathBeanDefinitionScanner

调用开始:子类没有重写父类的scan方法,所以这里会调用父类:

ClassPathBeanDefinitionScanner 的scan方法 ;请看下图的分析 

注意注意!!!!我们进入子类的doScan方法,我当时就是这里弄混乱的

ClassPathMapperScanner子类的doScan方法,因为当前实例是子类的实例,所以会去找子类的doScan方法(根据上面图我们知道子类重写了父类的doScan方法,所以这里会调用子类的doScan方法)并调用,如果子类没有,就会去父类找,找到了调用父类的方法,没有找到就会去父类的父类继续找

注意这里是进入 ClassPathMapperScanner的doScan,上面分析的很清楚:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值