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. }
     
      
     
  • 相关阅读:
    dell台式机网络唤醒
    今天学习到ROS的PCC的新的一种场景,用PCC不是为了带宽叠加而是为了换IP,PCC的标准做法
    默认ros安装好以后,可能对外开放的端口号,可能被黑客利用的地方,ros的0day漏洞
    ros-winbox利用防火墙安全登录,二次碰撞方法
    S5120V2-IRF2配置
    routeros ros mikrotik的ipsec配置,注意配置的步骤,以及哪些硬件支持哪种加速
    60岁-80岁老年人住院医疗险,既往症可理赔!家有长辈首选
    docker上2分钟安装mikrotik routeros
    pandas filter数据筛选
    (纪录片)光的故事 BBC Light Fantastic (2004)
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/6653991.html
Copyright © 2011-2022 走看看