feign 源码解析
2022-08-03 09:28:56 0 举报
AI智能生成
feign 源码解析,关注我,后续有更多的源码解析
作者其他创作
大纲/内容
自动配置类
1. FeignContext
2. Targeter
1. DefaultTargeter
2. FeignCircuitBreakerTargeter
3. FeignClientSpecification
启动注解 @EnableFeignClients
1. @Import(FeignClientsRegistrar.class)
1. registerBeanDefinitions
1. registerDefaultConfiguration
2. registerFeignClients
1. 获取所有的 feignClient 的BeanDefinition
2. 遍历所有beanDefinition, 注册 bean 和 相应的配置
1. registerClientConfiguration
2. registerFeignClient
FeignClientFactoryBean#getObject()
1. getTarget()
1. 获取 FeignContext
2. Feign.Builder builder = feign(context);
1. 获取Feignclient自定义的配置
0. Feign.Builder
1. FeignLoggerFactory
2. Encoder
3. Decoder
4. Contract
2. configureFeign
1. FeignClientProperties
2. FeignClientConfigurer
3. configureUsingProperties 和 configureUsingConfiguration
3. applyBuildCustomizers
3. 配置Url
1. 指定url属性,就直接调用
2. 没有指定,就loadBalance
1. Client client = getOptional(context, Client.class)
builder.client(client);
builder.client(client);
2. Targeter targeter = get(context, Targeter.class);
targeter.target(this, builder, context, target)
targeter.target(this, builder, context, target)
1. feign.target(target);
1. build().newInstance(target)
1. Map<String, MethodHandler> nameToHandler = targetToHandlersByName.apply(target)
2. InvocationHandler handler = factory.create(target, methodToHandler);
2. Proxy.newProxyInstance()
0 条评论
下一页