zoukankan      html  css  js  c++  java
  • springcloud feign远程调用服务实践

     一、下面步骤是实现feign远程服务调用

    1、服务器-提供者

    //服务器-提供者(provider),项目ID:user-service
    @RestController
    @RequestMapping("user")
    class UserController implements  UserFacade{
    
        @Autowired
        @Qualifier("userServiceImpl")
        UserService userService;
    
        @RequestMapping("getUserById")
        @Override
        public User getUserById(@RequestParam("userId") String userId) {
            return userService.getUserById(userId);
        }
    
        @RequestMapping("saveUser")
        @Override
        public User saveUser(@RequestBody User user) {
            return userService.saveUser(user);
        }
    }
    
    
    interface UserService {
         User getUserById(String userId);
         User getUserByUserName(String userName);
         User saveUser(User user);
    }
    
    @Service
    class UserServiceImpl implements UserService {
    
        @Override
        public User getUserById(String userId) {
            System.out.println("根据用户ID获取用户对象");
            return null;
        }
    
        @Override
        public User getUserByUserName(String userName) {
            System.out.println("根据用户名获取用户对象");
            return null;
        }
    
        @Override
        public User saveUser(User user) {
            System.out.println("保存用户对象");
            return null;
        }
    
    }
    

    2、客户端-消费者

    注释:product-service在此处是充当消费者角色,当它对外提供服务也可以充当提供者。所有一个服务既可以是提供者也可以是消费者。提供者与消费者可以相互调用

    //客户端-消费者(consumer),项目ID:product-service
    //客户端消费提供端提供的用户查询和保存功能
    
    /**
     * @ClassName ProductController
     * @Description feign的调用
     * @Author Neal
     * @Date 2019/4/29 14:47
     * @Version 1.0
     */
    @RestController
    @RequestMapping("product")
     class ProductController{
    
        @Autowired
        private UserFeign userFeign;
    
        @RequestMapping("getUserProduct")
        public String getUserProduct(@RequestParam("userId") String userId) {
            //远程调用获取用户数据
            User user = userFeign.getUserById(userId);
            //下面获取用户购买产品代码省略....
            return null;
        }
    
    }
    
    
    //远程调用接口
    @FeignClient(name = "user-service")
     interface UserFeign extends UserFacade{
    
        //这方法可以省略,因为集成接口了
        @GetMapping(value = "/user/getUserById",consumes = MediaType.APPLICATION_JSON_VALUE)
        User getUserById(String userId);
    
        //这方法可以省略,因为集成接口了
        @PostMapping(value = "/user/saveUser",consumes = MediaType.APPLICATION_JSON_VALUE)
        User saveUser(@RequestBody User user);
    }
    

      

    3、公共接口部分

    //公共接口(提供端和消费端都依赖的接口)
    interface UserFacade {
        @GetMapping(value = "/user/getUserById",consumes = MediaType.APPLICATION_JSON_VALUE)
        User getUserById(String userId);
    
        @PostMapping(value = "/user/saveUser",consumes = MediaType.APPLICATION_JSON_VALUE)
        User saveUser(@RequestBody User user);
    }
    

      

    4、配置

    4.1、客户端pom.xml添加依赖jar

    在客户端pom.xml文件中,增加相关依赖
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    

     

    5、测试步骤

    项目启动顺序:register(注册中心) -> provider(提供者:user-service) -> consumer(消费者:product-service)
    启动完成后查看服务是否已经注册上注册中心:http://localhost:9090
    

      

  • 相关阅读:
    山丽防水墙客户端的卸载
    还原冰点密码清除
    STP学习总结
    NTFS权限设置时卡死
    SQL server 2000安装时“以前的某个程序安装已在安装计算机上创建挂起”
    Projecet客户端登陆无法通过验证
    Linux-nftables
    Linux-kernel-timeline
    blog编辑技巧
    Linux-swap
  • 原文地址:https://www.cnblogs.com/chenweichu/p/12205902.html
Copyright © 2011-2022 走看看