SpringCloud Feign服务的消费者,如何相互调用

SpringCloud Feign服务于服务之间的相互调用

Feign

Feign是一个声明式的Web Service客户端,它使得编写Web Serivce客户端变得更加简单。我们只需要使用Feign来创建一个接口并用注解来配置它既可完成。它具备可插拔的注解支持,包括Feign注解和JAX-RS注解。Feign也支持可插拔的编码器和解码器。Spring Cloud为Feign增加了对Spring MVC注解的支持,还整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现。

下面,通过一个例子来展现Feign如何方便的对服务实现调用的。
如图,已有的几个项目包:
在这里插入图片描述
现在授权服务auth-server里面创建一个测试的demo
在这里插入图片描述
代码如下

@RestController
@RequestMapping(value = "/testFeign")
public class TestController {

    @GetMapping(value = "/hello")
    public String hello(@RequestParam("name")String name) {
        return "hello " + name;
    }

    @PostMapping(value = "/hello1")
    public String hello1(@RequestBody MyUser user) {
        if (user == null) {
            return "未知";
        }
        return user.toString();
    }
}

然后是消费这几个接口的eureka-client-demo1.首先是maven引用。


        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

接着开启feign注解@EnableFeignClients

@SpringCloudApplication
@EnableFeignClients
public class EurekaClientDemo1Application {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientDemo1Application.class, args);
    }

}

接着去定义auth-server服务的接口

@FeignClient(value = "oauthServer")
public interface HelloApiService {

    @GetMapping(value = "/testFeign/hello")
    public String hello(@RequestParam("name") String name);

    @PostMapping(value = "/testFeign/hello1")
    public String hello1(@RequestBody MyUser user);

}

然后就可以愉快的使用啦。使用起来跟其他bean没有什么两样。

 	@Autowired
    private HelloApiService helloApiService;
    
	@RequestMapping("aa/feign")
    public Map<String,Object> hello1(){
        Map<String,Object> ret = new HashMap<String, Object>();
        StringBuffer sb = new StringBuffer();
        String s1 = helloApiService.hello("张三");
        sb.append(s1).append("\n");
        String s3 = helloApiService.hello1(new MyUser("王五", "19"));
        sb.append(s3).append("\n");
        ret.put("show",sb.toString());
        return ret;
    }

测试结果如图:
在这里插入图片描述
已经成功的调用了auth-server的接口了,后面再加熔断和链路追踪。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值