初探Dubbo源码啊,随笔记
今日突然对spring的自定义注解有了兴趣,花了一点时间大致看了下,
Spring自定义通过 WETA-INF 目录下的 spring.schemas 与spring.handles 指定了xml的命名空间处理器与命名空间,通过这个来实现自定义的<标签>与<注解>编程,
此处我查看了dubbo的源码,dubbo/config/spring/schema/DubboNamespaceHandler主要为明明空间处理解析器,初始化注册了一下几个配置解析,
其中annotationBean主要为dubbo的自定义注解解析器,其他的则为自定义标签的解析器,此次主要看注解的解析实体AnnotationBean:
AnnotationBean的参数annotationPackage,就是在beandefinition创建时,从xml中读取到spring中。
源码通过ClassPathBeanDefinitionScanner. doScan扫描annotationPackage下所有的文件。配置成bean的类会定义成BeanDefinition,注册到spring。
18年初回顾了一下,看了一个引起回忆的文章 http://blog.csdn.net/jnqqls/article/details/45371785
依旧是通过spring 的 spring.handlers 进行文件加载,通过继承BeanDefinitionParser进行bean的解析,通过RootBeanDefinition进行bean的注入
而dubbo自己的bean通过继承DisposableBean, BeanFactoryPostProcessor, BeanPostProcessor, ApplicationContextAware实现了spring不同加载周期的阶段性功能
引用:
AnnotationBean的参数annotationPackage,就是在beandefinition创建时,从xml中读取到spring中。
源码通过ClassPathBeanDefinitionScanner.doScan扫描annotationPackage下所有的文件。配置成bean的类会定义成BeanDefinition,注册到spring