spring cloud feign 接口继承以及参数传递的问题
2017-03-31 23:04
691 查看
1. 优势
可以使用maven 进行访问,实现代码的共享,减少跨服务调用服务编写的问题
2. 使用
定义接口
spring mvc rest 接口实现
feign 跨服务调用
注解
调用
3. 注意问题
尽管使用接口继承,但是还是会发现部分参数是没法继承的类似 header 解决方法
调整rest 实现接口方法的签名,如下:
可以使用maven 进行访问,实现代码的共享,减少跨服务调用服务编写的问题
2. 使用
定义接口
publicinterfaceIUserService{
@RequestMapping(method =RequestMethod.GET, value ="/users/app",headers={"tenantid"})
@ApiOperation(value ="发送短信通知",httpMethod ="GET", response =User.class,notes ="请保证传入字段正确")
User getUser(@RequestParam("id")String id,@RequestHeader("tenantid")String tenantid);
@RequestMapping(method =RequestMethod.GET, value ="/users/app2")
User getUser2();
@RequestMapping(method =RequestMethod.GET, value ="/users/app3")
User getUser3();
@RequestMapping(method =RequestMethod.POST, value ="/users/app3")
User getUser4(@RequestBodyUser users);
}
spring mvc rest 接口实现
@RestController
publicclassUserServiceFeignControllerimplementsIUserService{
@Autowired
privateUserserviceImpl userserviceImpl;
@Override
publicUser getUser2(){
// TODO Auto-generated method stub
return userserviceImpl.getUser2();
}
@Override
publicUser getUser3(){
// TODO Auto-generated method stub
return userserviceImpl.getUser3();
}
@Override
publicUser getUser(String id,@RequestHeader("tenantid")String tenantid){
// TODO Auto-generated method stub
return userserviceImpl.getUser(id, tenantid);
}
@Override
publicUser getUser4(User users){
// TODO Auto-generated method stub
return users;
}
}
feign 跨服务调用
@FeignClient(url="http://localhost:8089/",name="userservicecall")
publicinterfaceIFeignUserServiceextendsIUserService{
}
注解
@SpringBootApplication
@EnableFeignClients()
publicclassApplication{
publicstaticvoid main(String[] args){
SpringApplication.run(Application.class, args);
}
}
调用
@RestController
publicclassUserCacheController{
@Autowired
privateIFeignUserService userservice;
@RequestMapping(value ="/demo1", method =RequestMethod.GET)
publicObject importUser(String id,@RequestHeader("tenantid")String tenantid)throwsExecutionException{
return userservice.getUser(id,tenantid);
}
}
3. 注意问题
尽管使用接口继承,但是还是会发现部分参数是没法继承的类似 header 解决方法
调整rest 实现接口方法的签名,如下:
@Override
publicUser getUser(String id,@RequestHeader("tenantid")String tenantid){
// TODO Auto-generated method stub
return userserviceImpl.getUser(id, tenantid);
}
相关文章推荐
- 使用Spring cloud Feign在后台服务之间调用传递Multipart无法传递的问题
- SpringCloud Feign 传参问题及传输Date类型参数的时差
- spring cloud feign 调用微服务转发不了request请求头和参数问题解决方案
- spring中类继承TimerTask后 service 和dao 无法注入 以及参数无法传递
- SpringCloud使用feign时的复杂参数传递
- 解决WCF接口无法传递object参数的问题
- jsp传递中文参数、空格以及表单内容换行问题解决小结
- 解决WCF接口无法传递object参数的问题
- Spring Cloud中关于Feign的常见问题总结
- JAVA 接口与继承作业——动手动脑以及课后实验性问题
- Spring 代理对象,cglib,jdk的问题思考,AOP 配置注解拦截 的一些问题.为什么不要注解在接口,以及抽象方法.
- JSP中js传递和解析URL参数以及中文转码和解码问题
- jsp传递中文参数、空格以及表单内容换行问题解决小结
- spring cloud-Feign使用中遇到的问题总结
- spring参数校验,form表单形式,以及http接口形式
- struts2重定向时传递参数的实现!以及传递参数为中文时的乱码问题解决!
- JSP中js传递和解析URL参数以及中文转码和解码问题
- 关于 php 调用 其他语言写的Web Service SOAP 接口的参数传递问题
- js传递汉字类型参数值乱码问题,以及url传递多个参数报违法的参数值