dubbo学习笔记——Service导出到注册中心及Refence引用代理

dubbo扫描注解,用的是AnnotationBean, 实现BeanFactoryPostProcessor和BeanPostProcessor两个接口,BeanFactoryPostProcessor用于扫描@Service注解注册成为BeanDefinition,BeanPostProcessor用于生成代理对象

 

1.postProcessBeanFactory方法,扫描指定包下所有带@Service注解的类,并注册为BeanDefinition;采用ClassPathBeanDefinitionScanner实现

 

 

2.postProcessAfterInitialization方法,在Bean初始化后执行,导出Service

     a)判断是否在servicePackage内,不匹配则不做任何操作

          

    b)若bean上存在@Service注解,则生成ServiceBean

     c)通过@Service注解参数,注入ServiceBean属性值,用于点对点直连,而后调用afterProperties检查配置是否可用

     d)缓存ServiceBean并且导出到注册中心

          

3.postProcessBeforeInitialization方法,执行初始化注入之前执行,注入以@Reference修饰的方法或者属性

     a)检查是否与referencePackage匹配,不匹配不做任何操作

     b)若方法上存在@Reference注解并且value属性值不为空,则调用方法将value作为属性值传入;若存在@Reference注解且value为空,则构造ReferenceBean对象,并生成代理对象

          

     c)若属性字段上存在@Reference注解且value不为空,则将value设置到属性;若存在@Reference注解且value为空,则构造ReferenceBean对象,并生成代理对象

            

posted @ 2018-01-08 00:35  flushest  阅读(988)  评论(0编辑  收藏  举报