源码第一步

读框架源码,一开始的时候还真是不知道如何下手。
本篇文字以motan框架为例,记录下我是从哪里入手开始看源码的,个人感觉有通用性。
本人读源码不多,大牛请无视。

motan框架代表着最典型的和Spring相结合的框架的组织模式。
包括如下几个部分:

1、自定义XML标签
2、把配置的标签转化成框架的对象
3、在标签生成的对象中进行框架服务初始化
4、利用SPI服务生成Handler配合框架服务发布

自定义XML配置,需要先定义配置的Schema,然后在Spring的配置文件中引用Schema和nameSpace。
将SCHEMA放置在META-INF目录下,然后在spring.schemas文件中定义namespace对应的xsd文件。
如:http://api.weibo.com/schema/motan.xsd=META-INF/motan.xsd

配置XML无非就是想通过配置生成框架需要使用的对象。
例如:
<motan:service interface="quickstart.FooService"ref="serviceImpl"registry="myzk"export="8080"/>

这句将通过怎样的方式生成怎样的对象?
Spring将先从META-INF目录下查找解析标签的handler
http://api.weibo.com/schema/motan=com.weibo.api.motan.config.springsupport.MotanNamespaceHandler
该类实现了NameSpaceHandlerSupport接口,其中在init方法中,有这样一句:

registerBeanDefinitionParser("service",new MotanBeanDefinitionParser(ServiceConfigBean.class,true));

意思是说,将service标签所对应的配置,转化成ServiceConfigBean对象。
所以我们的motan:service标签将映射成ServiceConfigBean对象。

这个对象有什么特别之处呢?看类签名:

public class ServiceConfigBean<T>extendsServiceConfig<T>
implements
BeanPostProcessor,
BeanFactoryAware,
InitializingBean,
DisposableBean,
ApplicationListener<ContextRefreshedEvent>{…}

发现了熟悉的Spring扩展接口:
BeanPostProcessor - 可以在Spring加载完Bean之前之后进行对象的处理
ApplicationListener - 在ApplicationContext的refresh方法中执行的监听器接口
motan框架的服务发布export方法就是在这个接口的方法中调用的
DisposableBean - 对象析构方法

除此之外,motan还配合SPI定义了很多Service,这些service将通过ExtensionLoader加载,像是SimpleConfigHandler,ClusterSpi等等。

了解到这些之后,就可以从对应的地方入手,关注自己感兴趣的地方了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值