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. }
     
      
     
  • 相关阅读:
    vue表单:输入身份证号码则自动获取对应的年龄和性别,,若不输入身份证号则自己填写年龄和性别
    el-input 电话号码输入时加上空格(344)
    vue图片上传---融合裁剪功能
    shell 基本编程
    virtualbox 安装centos ,运行shell 脚本
    js 检测变量类型
    js deepCopy
    python 安装requests库
    python 识别文件 文件夹
    python 删除非空文件夹
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/6653991.html
Copyright © 2011-2022 走看看