美文网首页
dubbo对spring扩展自定义标签的加载

dubbo对spring扩展自定义标签的加载

作者: 林牧晨 | 来源:发表于2018-03-21 18:04 被阅读0次

    主要讲述两点:

    1.spring扩展的加载逻辑

    2.mock加载的一些逻辑

    spring的扩展目录结构:

    加载初始化:

    目录结构:根据配置的标签,加载指定的class类, 命名规则:基本是名称后面加上Config,有些需要初始化bean的需要实现spring加载bean的接口的,就会实现一个子类,名字变成后面加上bean

    先通过DubboBeanDefinitionParser做一些加载bean的操作,对配置的里面的参数(属性)设置到bean中,默认不设置懒加载,

    接下去设置ID,名字等

    然后对于一些特定的bean做一些增强,相关详细不做讲述

    增强完成之后,对指定的config或者bean做操作

    下面对ReferenceBean里面初始化做一些了解,主要针对mock的操作

    init方法会去校验mock

    校验mock的逻辑:

    1.有没有配置local参数,配置的时候会去调用ConfigUtils.isDefault()方法,如果是true,就会默认去找配置的id的名字,加上Local,如果找不到就直接抛出throw new IllegalStateException异常。如果配置的不是true或者default就会去找你配置的local的类,反射调用构造方法,构造方法的入参是装饰者的实例(也就是此处运用的是装饰者模式)(好处:容易扩展一个类的功能。动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)

    判断配置的是否是true或者default.如果是就返回true 配置的reference的ID 装饰者模式,扩展实现类

    2.看有没有配置stub属性,如果配置,同理,也是看配置的是true还是default还是其他等还是会加上stub来找本地的实现类,剩下的逻辑和local一致

    3.有没有配置mock,mock的配置如下

        3.1先判断是否是return开头,如果是,就执行处理

        3.2如果不是return开头的,就先去找mock的值,是否是true或者default,如果是就类后面加上mock去找此类,不是就认为mock配置就是需要执行的类,然后去执行没有入参的构造方法

    看mock配置是否是return开头

    下面看下如果是return开头的配置:

    具体配置

    这个一目了然,将配置的数据返回,会转成相应的数据格式做返回

    到这里结束了mock的检查

    相关文章

      网友评论

          本文标题:dubbo对spring扩展自定义标签的加载

          本文链接:https://www.haomeiwen.com/subject/tabbqftx.html