spring cloud feign 接口继承以及参数传递的问题
  zNRyot8onCGb 27天前 20 0
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.  
  2. @RestController
  3. publicclassUserServiceFeignControllerimplementsIUserService{
  4.  
  5. @Autowired
  6. privateUserserviceImpl userserviceImpl;
  7. @Override
  8. publicUser getUser2(){
  9. // TODO Auto-generated method stub
  10. return userserviceImpl.getUser2();
  11. }
  12.  
  13. @Override
  14. publicUser getUser3(){
  15. // TODO Auto-generated method stub
  16. return userserviceImpl.getUser3();
  17. }
  18.  
  19. @Override
  20. publicUser getUser(String id,@RequestHeader("tenantid")String tenantid){
  21. // TODO Auto-generated method stub
  22. return userserviceImpl.getUser(id, tenantid);
  23. }
  24.  
  25. @Override
  26. publicUser getUser4(User users){
  27. // TODO Auto-generated method stub
  28. return users;
  29. }
  30.  
  31. }
feign 跨服务调用
 
  1. @FeignClient(url="http://localhost:8089/",name="userservicecall")
  2. publicinterfaceIFeignUserServiceextendsIUserService{
  3.  
  4. }
注解
  1. @SpringBootApplication
  2. @EnableFeignClients()
  3. publicclassApplication{
  4.  
  5. publicstaticvoid main(String[] args){
  6. SpringApplication.run(Application.class, args);
  7. }
  8. }
调用
  1. @RestController
  2. publicclassUserCacheController{
  3.  
  4. @Autowired
  5. privateIFeignUserService userservice;
  6. @RequestMapping(value ="/demo1", method =RequestMethod.GET)
  7. publicObject importUser(String id,@RequestHeader("tenantid")String tenantid)throwsExecutionException{
  8. return userservice.getUser(id,tenantid);
  9. }
  10. }
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. }
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 27天前 0

暂无评论

zNRyot8onCGb