@FeignClient注解及参数

更新时间:2023-05-24 02:46:16 阅读: 评论:0

@FeignClient注解及参数
@FeignClient注解及参数
⼀、FeignClient注解
FeignClient注解被@Target(ElementType.TYPE)修饰,表⽰FeignClient注解的作⽤⽬标在接⼝上
@FeignClient(name ="github-client", url ="", configuration = GitHubExampleConfig.class)
public interface GitHubClient {
@RequestMapping(value ="/arch/repositories", method = RequestMethod.GET)几多
String archRepo(@RequestParam("q") String queryStr);
}
声明接⼝之后,在代码中通过@Resource注⼊之后即可使⽤。@FeignClient标签的常⽤属性如下:
蹩脚英语
name:指定FeignClient的名称,如果项⽬使⽤了Ribbon,name属性会作为微服务的名称,⽤于服务发现
url: url⼀般⽤于调试,可以⼿动指定@FeignClient调⽤的地址
decode404:当发⽣http 404错误时,如果该字段位true,会调⽤decoder进⾏解码,否则抛出FeignException
configuration: Feign配置类,可以⾃定义Feign的Encoder、Decoder、LogLevel、Contract
fallback: 定义容错的处理类,当调⽤远程接⼝失败或超时时,会调⽤对应接⼝的容错逻辑,fallback指定的类必须实现@FeignClient标记的接⼝fallbackFactory: ⼯⼚类,⽤于⽣成fallback类⽰例,通过这个属性我们可以实现每个接⼝通⽤的容错逻辑,减少重复的代码
path: 定义当前FeignClient的统⼀前缀
kiss my ass
@FeignClient(name ="github-client",
url ="",
configuration = GitHubExampleConfig.class,
fallback = GitHubClient.DefaultFallback.class)
public interface GitHubClient {
@RequestMapping(value ="/arch/repositories", method = RequestMethod.GET)
String archRepo(@RequestParam("q") String queryStr);
/**
* 容错处理类,当调⽤失败时,简单返回空字符串
*/
@Component
public class DefaultFallback implements GitHubClient {
@Override
public String archRepo(@RequestParam("q") String queryStr){
return"";
}
}
}violet是什么意思
//在使⽤fallback属性时,需要使⽤@Component注解,保证fallback类被Spring容器扫描到,GitHubExampleConfig内容如下:
@Configuration
public class GitHubExampleConfig {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;华裔英文
}
}
在使⽤FeignClient时,Spring会按name创建不同的ApplicationContext,通过不同的Context来隔离FeignClient的配置信息,在使⽤配置类时,不能把配置类放到Spring App Component scan的路径下,否则,配置类会对所有FeignClient⽣效.
⼆、Feign Client 和@RequestMapping
当前⼯程中有和Feign Client中⼀样的Endpoint时,Feign Client的类上不能⽤@RequestMapping注解否则,当前⼯程该endpoint http 请求且使⽤accpet时会报404
Controller:
@RestController
@RequestMapping("/v1/card")
public class IndexApi {
@PostMapping("balance")
@ResponBody
public Info index(){
Info.Builder builder =new Info.Builder();
builder.withDetail("x",2);
builder.withDetail("y",2);
return builder.build();
}
}
Feign Client
@FeignClient(
回馈英文name ="card",
url ="localhost:7913",
fallback = CardFeignClientFallback.class,
configuration = FeignClientConfiguration.class
)
@RequestMapping(value ="/v1/card")favorites是什么意思
public interface CardFeignClient {
@RequestMapping(value ="/balance", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
Info info();
如果 @RequestMapping注解被⽤在FeignClient类上,当像如下代码请求/v1/card/balance时,注意有Accept header:
Content-Type:application/jsone you later
Accept:application/json
如果不包含Accept header时请求,则是OK:
@FeignClient(
ich liebe dichname ="card",
敌人的英文url ="localhost:7913",
fallback = CardFeignClientFallback.class,
configuration = FeignClientConfiguration.class
)
public interface CardFeignClient {
@RequestMapping(value ="/v1/card/balance", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)    Info info();
}

本文发布于:2023-05-24 02:46:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/120327.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:配置   属性   服务   注解
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图