contract: [ˈkɒntrækt , kənˈtrækt],合同;合约;契约;
OpenFegin的契约配置,主要作用是程序员和Fegin约定一种声明HTTP接口的方式。具体来说,我们在FeginClient接口类中声明的方法,使用SpringMVC注解来标识请求路径、请求参数等。OpenFegin能够识别这些SpringMVC注解的原因就是我们默认配置了一个SpringMvcContract,这样的话OpenFegin才知道SpringMVC注解的含义,并转换成请求。
默认Contract配置代码
@Configuration(proxyBeanMethods = false)public class FeignClientsConfiguration {.....@Autowired(required = false)private List<AnnotatedParameterProcessor> parameterProcessors = new ArrayList<>();.....@Bean@ConditionalOnMissingBeanpublic Contract feignContract(ConversionService feignConversionService) {return new SpringMvcContract(this.parameterProcessors, feignConversionService);}.....}
一般的我们保持默认的Contract配置就好
Fegin原生契约
OpenFegin是对Fegin的进一步扩展,Fegin有自己的一套标识请求方法的注解,下面我们就演示一下配置Fegin原生契约并使用的方法
@FeignClient(name = "provider-nacos", contextId = "origin-client", configuration = ProviderOriginClientConfig.class)public interface ProviderOriginClient4 {@RequestLine("GET /test")String test();}
//@Configurationpublic class ProviderOriginClientConfig {@Beanpublic Contract feignContract(ConversionService feignConversionService) {return new Contract.Default();}}
@RestControllerpublic class ConsumerNacosDemoController {@Autowiredprivate ProviderOriginClient4 providerOriginClient4;@RequestMapping("testOriginFegin")public String testOriginFegin() {return providerOriginClient4.test();}}
当然
ProviderOriginClientConfig也可以替换成yaml方式进行配置。 下面是YAML的配置方式
@FeignClient(name = "provider-nacos", contextId = "origin-client-yaml")public interface ProviderOriginClientYaml {@RequestLine("GET /test")String test();}
feign:client:config:origin-client-yaml:contract: feign.Contract.Default
@RestControllerpublic class ConsumerNacosDemoController {@Autowiredprivate ProviderOriginClientYaml providerOriginClientYaml;@RequestMapping("testOriginFeginYaml")public String testOriginFeginYaml() {return providerOriginClientYaml.test();}}
总结
本篇主要讲述了OpenFegin中对契约Contract的配置,一般的使用默认的就好。
