zoukankan      html  css  js  c++  java
  • spring cloud feign 接口继承以及参数传递的问题

    1. 优势
     
      可以使用maven 进行访问,实现代码的共享,减少跨服务调用服务编写的问题
     
    2. 使用
     
       定义接口
       
    1. publicinterfaceIUserService{
    2. @RequestMapping(method =RequestMethod.GET, value ="/users/app",headers={"tenantid"})
    3. @ApiOperation(value ="发送短信通知",httpMethod ="GET", response =User.class,notes ="请保证传入字段正确")
    4. User getUser(@RequestParam("id")String id,@RequestHeader("tenantid")String tenantid);
    5. @RequestMapping(method =RequestMethod.GET, value ="/users/app2")
    6. User getUser2();
    7. @RequestMapping(method =RequestMethod.GET, value ="/users/app3")
    8. User getUser3();
    9. @RequestMapping(method =RequestMethod.POST, value ="/users/app3")
    10. User getUser4(@RequestBodyUser users);
    11. }
    spring mvc rest  接口实现
     
     
    1. @RestController
    2. publicclassUserServiceFeignControllerimplementsIUserService{
    3. @Autowired
    4. privateUserserviceImpl userserviceImpl;
    5. @Override
    6. publicUser getUser2(){
    7. // TODO Auto-generated method stub
    8. return userserviceImpl.getUser2();
    9. }
    10. @Override
    11. publicUser getUser3(){
    12. // TODO Auto-generated method stub
    13. return userserviceImpl.getUser3();
    14. }
    15. @Override
    16. publicUser getUser(String id,@RequestHeader("tenantid")String tenantid){
    17. // TODO Auto-generated method stub
    18. return userserviceImpl.getUser(id, tenantid);
    19. }
    20. @Override
    21. publicUser getUser4(User users){
    22. // TODO Auto-generated method stub
    23. return users;
    24. }
    25. }
    feign 跨服务调用
     
    1. @FeignClient(url="http://localhost:8089/",name="userservicecall")
    2. publicinterfaceIFeignUserServiceextendsIUserService{
    3. }
    注解
    1. @SpringBootApplication
    2. @EnableFeignClients()
    3. publicclassApplication{
    4. publicstaticvoid main(String[] args){
    5. SpringApplication.run(Application.class, args);
    6. }
    7. }
    调用
    1. @RestController
    2. publicclassUserCacheController{
    3. @Autowired
    4. privateIFeignUserService userservice;
    5. @RequestMapping(value ="/demo1", method =RequestMethod.GET)
    6. publicObject importUser(String id,@RequestHeader("tenantid")String tenantid)throwsExecutionException{
    7. return userservice.getUser(id,tenantid);
    8. }
    9. }
    3. 注意问题
       尽管使用接口继承,但是还是会发现部分参数是没法继承的类似 header 解决方法
       调整rest 实现接口方法的签名,如下:
      
    1. @Override
    2. publicUser getUser(String id,@RequestHeader("tenantid")String tenantid){
    3. // TODO Auto-generated method stub
    4. return userserviceImpl.getUser(id, tenantid);
    5. }
     
      
     
  • 相关阅读:
    C++入门经典-例4.9-输出不同生命周期的变量值
    C++入门经典-例4.8-同名的全局变量和局部变量
    C++入门经典-例4.7-变量的作用域
    C++入门经典-例4.6-使用重载函数
    C++入门经典-例4.5-利用循环求n的阶乘
    C++入门经典-例4.4-循环嵌套之求n的阶乘
    C++入门经典-例4.3-函数的递归调用之汉诺塔问题
    C++入门经典-例4.2-调用默认参数的函数
    C++入门经典-例4.1-声明、定义和使用函数
    C++入门经典-例3.25-使用循环输出闰年
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/6653991.html
Copyright © 2011-2022 走看看