随笔分类 - dubbo源码笔记
摘要:【 启动服务的日志分析 】 1.暴露本地服务 2.暴露远程服务 3.启动Netty 4.打开zk连接 5.将服务信息注册到zk 6.监听zk 【 暴露本地服务和暴露远程服务的区别 】 1.暴露本地服务 指暴露在用一个JVM里面,不用通过调用zk进行远程通信,例如:在同一个服务,自己调用自己的接口,没
阅读全文
摘要:【 项目工程 】 【 Person.java 模型类 】 【 自定义的person.xsd文件 】 [ 说明 ] 1.定义targetNamespace="http://higgin.com/schema"中,targetNamespace表示目标命名空间,xmlns的值要和这个相同 2.xsd:e
阅读全文
摘要:【开始解析最后一行代码 ExtensionLoader.getAdaptiveExtension()】 【getAdaptiveExtension()调用结果】 【 createAdaptiveExtensionClass()源码 】 【createAdaptiveExtensionClassCod
阅读全文
摘要:【简述】 Javassist是一个开源的java字节码操作工具,主要是对已经编译好class文件进行修改和处理,可以直接检查、修改、创建 java类。 【javassist实例】 【运行结果】
阅读全文
摘要:【对这行代码进行源码分析】 【对上面第二行代码进行源码分析】 先看下第一行代码执行后的ExtensionLoader实例化的结果 其中 * type =interface com.alibaba.dubbo.rpc.Protocol * ExtensionFactory objectFactory
阅读全文
摘要:【dubbo的IOC实现方法】 dubbo的IOC具体实现在:T injectExtension( T instance )方法中,该方法在3个地方被使用: 【 injectExtension( T instance )源码】 injectExtension( T instance )方法的作用是通
阅读全文
摘要:【Adaptive注解】 【Adaptive分别作用在类或方法上】 作用在类上 作用在方法上 【@Adaptive注解在类上和方法上的区别】 1.注解在类上 代表人工实现编码,即实现了一个装饰类,例如ExtensionFactory 2.注解在方法上 代表自动生成和编译一个动态的adaptive类,
阅读全文
摘要:【dubbo为什么不采用JDK自带的SPI】 1.JDK自带的SPI(ServiceLoader)会一次性实例化扩展点所有实现,基本只能通过遍历全部获取,也就是接口的实现类全部加载并实例化一遍,如果我们不想使用某些类,它也会被加载并且实例化,这就导致了浪费。 2.增加了对扩展点IOC和AOP的支持,
阅读全文
摘要:【SPI的设计目标】 面向对象的设计里,模块之间是基于接口编程,模块之间不对实现类进行硬编码。 一旦代码里设计具体的实现类,就违法了可插拔的原则,如果需要替代一种实现,就要修改代码。 为了实现在模块装配的时候,不在模块里面写死代码,就需要一种服务发现机制。 Java spi 就是提供了这样一种机制:
阅读全文