关于FeignClient注解的使用,部署访问

本文详细介绍了FeignClient在微服务架构中的应用,包括其基本概念、主要用途及如何实现服务间的调用。通过示例展示了如何在A服务中通过FeignClient调用B服务的接口,以及部署和配置的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近来关于FeignClient的使用,按理说应该现在已经是很成熟了,但目前仍然会有人有一些疑惑,就想从自己的角度去把这个如何使用做个介绍:
从四个角度,了解FeginClient是什么,主要用于做什么的,如何使用这个,如何部署访问到
首先关于FeginClient注解,主要是用于服务间进行调用,作用在接口上,把接口暴露出来,其他服务可以访问到,目前我们使用的注册中心用的eurkea,举例:
A,B两套微服务
B服务上正常写自己的controller调用服务(假定获取数量)
A服务需要获取到B的数量进行A的数量的操作,这时候就需要在A服务中写一个:(分别用Get和Post方式)
这是post请求:
@FeignClient(name=“B”)
@RequestMapping("/product")
public interface ProductService {

@RequestMapping(value = "/getCounts", method = RequestMethod.POST,consumes = "application/json")
@ApiOperation("查询数量值")
public ContractRootResp<String> getCounts(@RequestBody ContractRootReq<SeqCtrlBo> req);

}
这是get请求:
@FeignClient(name=“B”)
@RequestMapping("/product")
public interface ProductService{

@RequestMapping(value = "/getCounts", method = RequestMethod.GET)
@ApiOperation("查询数量值")
public ContractRootResp<String> getCounts(@RequestParam("orderId") String orderId);

}

	@Autowired
    private BFormService bFormService;
在A中写上面的这两种方式去声明,然后引入注入这个bFormService,然后直接调用bFormService.getCounts即可。
最后需要注意的一点:
	
**关于这个部署,只需要将A、B微服务打包部署上去,在同一个注册中心上就可以访问到**

### 如何在 FeignClient 中指定 URL #### 使用固定 URL 的方式 当使用 `@FeignClient` 注解定义客户端接口时,可以通过直接设定 `url` 属性来静态地指向特定的服务端点。这种方式适用于那些不需要频繁变更的目标地址场景。 ```java @FeignClient(name = "github-client", url = "https://api.github.com") public interface GitHubClient { @RequestMapping(value = "/search/repositories", method = RequestMethod.GET) String searchRepo(@RequestParam("q") String queryStr); } ``` 此段代码展示了如何创建一个名为 `"github-client"` 的 Feign 客户端实例,并将其绑定到给定的 API 地址上[^3]。 #### 动态指定 URL 方式 对于需要根据不同条件或环境变量灵活调整访问路径的情况,则应采用基于属性占位符的方式实现动态配置。这允许应用程序依据外部因素(比如部署阶段或是不同租户的需求),轻松改变所连接的服务位置而无需修改源码本身。 ```properties # application.properties 文件中的配置项 api.xxx.url=http://example-service-url/ ``` 接着,在声明 Feign 接口的时候利用 Spring EL 表达式的 `${}` 语法引入这些预设好的键值对: ```java @FeignClient(name = "hongxuan-service", url = "${api.xxx.url}") public interface FeignService { // 对应的具体业务逻辑方法签名... } ``` 上述例子说明了怎样借助于应用上下文中已有的配置信息来自适应地更改远程调用的目的地[^1]。 另外值得注意的是,在某些情况下还可以通过自定义拦截器或者重写默认行为的方法进一步增强这种灵活性;例如可以在 SynchronousMethodHandler 类内部操作 target 来达到同样的效果[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值