• Spring @FeignClient


    使用Spring Cloud搭建各种微服务之后,服务可以通过@FeignClient使用和发现服务场中的其他服务。

    还是以Config Server和Config Client为例,这是服务场中的注册的两个微服务。

    这里写图片描述

    Config Server中定义了两个服务接口(一个Post、一个Get方法)

    package demo.controller;
    
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import demo.model.User;
    
    @RestController
    @RefreshScope
    public class Controller {
    
        @GetMapping(value="s")
        String helloServer(String username) {
            return "Hello " + username + "!";
        }
    
        @PostMapping(value="u")
        String helloUser(@RequestBody  User user) {
            return "Hello " + user + "!";
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    在Config Client(spring.application.name=test-dev)我们使用Config Server中定义的这两个微服务。

    import org.springframework.cloud.netflix.feign.FeignClient;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import cn.test.bean.User;
    
    
    @FeignClient(value = "config-service")
    public interface FindService {
    
        @GetMapping(value="s")
        String helloServer(@RequestParam("username")String username);
    
        @PostMapping(value="u")
        String helloUser(@RequestBody User user);
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    注意,Get方法中通过@RequestParam指定需要传递的参数,应用启动时需添加@EnableFeignClients注解。

    @Autowired 
        private FindService service;
    
        @GetMapping("/find")
        String find(String param) {
            return "find " + service.helloServer(param);
        }
    
        @PostMapping("/f")
        String findU(@RequestBody User user) {
            return "find " + service.helloUser(user);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    调用如下:

    这里写图片描述

  • 相关阅读:
    MySQL备份与恢复工具之XTRABACKUP
    ROS 文件系统
    MongoDB 未授权访问漏洞
    springboot电子阅览室app毕业设计源码016514
    #传输# #传输数据判断#
    GBase 8s 常用函数
    对均匀采样信号进行重采样
    正点原子MP157系统移植和根文件系统构建视频教程之uboot命令学习笔记
    网络安全(黑客)自学
    ts 类型体操 Chainable Options 可链式选项
  • 原文地址:https://blog.csdn.net/m0_67402731/article/details/126496586