Feign源码探索之旅

 

我们从FignClientsRegistrar这个类开始首次探索.

FignClientsRegistrar实现了三个接口分别是ImportBeanDefinitionRegistrar,ResourceLoaderAware,EnvironmentAware;

其中ImportBeanDefinitionRegistrar定义了方法void registerBeanDefinitions(AnnotationMetadata var1, BeanDefinitionRegistry var2); 

方法实现如图:

 

ResourceLoaderAware定义了方法void setResourceLoader(ResourceLoader var1); 
EnvironmentAware定义了方法void setEnvironment(Environment var1);

ps:加this关键字的原因是

 this.属性名称                

                   指的是访问类中的成员变量,用来区分成员变量和局部变量(重名问题).完成对 对象变量的赋值.

首先看一下

-registerDefaultConfiguration(metadata AnnotationMetadata, registry BeanDefinitionRegistry)void

然后就看一下

-registerClientConfiguration(registry BeanDefinitionRegistry, name Object, configuration Object)void

 

 

ps:我已经看到崩溃..这都哪儿跟哪儿....看源码就像玩跳一跳,一会儿就不知道跳到哪里去了...

好了,去吃午饭.

I`m back

接下来看

+registerBeanDefinition(beanName String, beanDefinition BeanDefinition)void

 

 

1图解如下:

外层hasText

内层hasText

 内层hasText的containsText方法

额,要不今天先这样子.

2图解

 

3图解

1)图解

+validate()void

gao

 前方高能预警,源码轰炸.(我看得时候很懵.看完了更懵*^*)

 

 

 2)当beanDefinition不是AbstractBeanDefinition时,抛出异常: Validation of bean definition failed

我赶脚上了ze趟车就下不来了.....

图4其实就是以String类型的beanName作为key取出BeanDefinition类型的value

图5我想了想,不解释了.

图6如果BeanDefinition类型的existingDefinition不为空且此映射包含对于指定的键的映射关系,那么重置类定义.

 

 

 

 

 


 

 

 

 

 

 


 





 

posted @ 2019-08-07 09:11  LearnSB  阅读(164)  评论(0编辑  收藏  举报