Feign和RestTemplate 的使用比较

2023-05-16

Feign和RestTemplate 的使用比较

一.RestTemplate

基于RestTemplate 进行远程服务调用,但是在调用之前基于loadBalancerClient对象去从nacos注册中心基于服务名查找服务实例(可能有多个),此时会在本地按照一定算法去选择服务实例,然后进行服务调用.
1.首先创建RestTemplate的实例,交给IOC容器管理
在这里插入图片描述
2.在Controller类中注入loadBalancerTemplate
在这里插入图片描述
3.通过@LoadBalancer,可以通过服务名sca-provider直接获取ip地址和端口号,缺点是方法不能重复调用.在这里插入图片描述

二.feign是SpringCloud的一个组件

使用方式:
1.添加feign依赖
在这里插入图片描述
2.在启动类中添加注解@EnableFeignClients,这样在启动启动feign方式的服务调用(服务启动时会扫描@FeignClient注解描述的接口,并基于接口创建代理对象)由代理对象帮我们发起远程调用.
在这里插入图片描述
3.写服务调用的接口,底层会在服务启动时帮我们创建实现(代理对象),在实现类内部进行远程服务调用
其中:1),name属性的值为nacos中的服务名
2),contextId 为一个当前接口名,如果不写清楚 当有两个方法访问sca-provider时,底层会同时注册sca-provider时 会出现bean重复注册的.
因为将来一个服务提供方会提供很多资源调用,此时假如没有指定contextId,服务启动就会重复注册sca-provider从而导致失败 fallbackFactory用于指定服务中断或异常时,应该返回给客户端的默认结果
在这里插入图片描述
此处的fallbackFactory用于指定服务中断或异常时,应该返回给客户端的默认结果.
在这里插入图片描述
4.写一个feign的controller,用来调用service中的接口

@RestController
public class FeignConsumerController {
    @Autowired
    private RemoteProviderService remoteProviderService;

//  @PathVariable URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“)   绑定到操作方法的入参中
    @GetMapping("/feign/echo/{msg}")
    public String doFeignEcho(@PathVariable String msg){
        return remoteProviderService.echoMsg(msg);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Feign和RestTemplate 的使用比较 的相关文章

随机推荐