DUBBO-SPI机制

DUBBO-SPI机制

获取扩展点加载器

  • new出ExtensionLoader对象,初始化对象里的type和objectfactory对象以及各种map(扩展点加载器map,扩展点实例map,class与name的map,name与class的map,等等)
  • 获取扩展点加载器实例并返回

获取实例要使用的实例

  • 加载文件,获取classpath下的meta-inf下的文件并逐行解析

  • 根据等号(=)分解字符串,前边是名字(支持多个名字对应一个类型,用逗号分隔),后边是类型

  • 根据类型生成对象实例,放到class和name的map中

  • 判断类型的构造器,如果是一个有一个参数的构造器且参数是要扩展的类型的话,则把这个类视为包装类,放到包装类的set中

  • 实现依赖注入
    1.获取实例的所有set方法,利用set方法注入
    2.如果方法上有DisableInject注解就不注入(对DisableInject的支持)
    3.获取set方法的第一个参数,和参数类型
    4.根据参数类型和setxxx的xxx从objectfactory中获取对象,进行属性赋值

  • 实现aop
    1.循环包装类的set集合,把实例化包装类,将扩展的类作为参数传到包装类的构造器中,在将这个包装类注入的对应的属性中,到此,dubbo-spi结束.

你可能感兴趣的:(dubbo,分布式,rpc)