SpringCloud Feign多参数传递的方法及需要注意哪些问题
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文小编为大家详细介绍"SpringCloud Feign多参数传递的方法及需要注意哪些问题",内容详细,步骤清晰,细节处理妥当,希望这篇"SpringCloud Feign多参数传递的方法及需要注意
千家信息网最后更新 2026年11月02日SpringCloud Feign多参数传递的方法及需要注意哪些问题
本文小编为大家详细介绍"SpringCloud Feign多参数传递的方法及需要注意哪些问题",内容详细,步骤清晰,细节处理妥当,希望这篇"SpringCloud Feign多参数传递的方法及需要注意哪些问题"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
Feign多参数传递及注意的问题
这边沿用前面的Eureka,Feign,Service
在服务提供者cloud-shop-userservice中新增几个方法
/** * 保存用户 * 2018年1月18日 */ @PostMapping("/user") public String aveUser(@RequestBody User user) { logger.info("保存用户 :" +user.toString()); return "Success"; } /** * 根据用户名和密码查询用户 * 2018年1月18日 */ @GetMapping("/findUser") public User findUserByNameAndPassword(String name ,String password) { logger.info("name :"+name +"---password :" +password); User user= new User(); user.setName(name); user.setPassword(password); return user; }修改feign的UserService,新增对应的方法
package cn.sh.daniel.service; import org.springframework.cloud.netflix.feign.FeignClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import cn.sh.daniel.entity.User; @FeignClient(value = "cloud-shop-userservice")public interface UserService { @GetMapping("/user/{id}") public User findUserById(@PathVariable("id")Long id); @PostMapping("/user/user") public String aveUser(@RequestBody User user) ; @GetMapping("/user/findUser") public User findUserByNameAndPassword(String name ,String password);}在feign的controller中调用方法
/** * 保存用户 * 2018年1月18日 */ @PostMapping("/user") public String aveUser(@RequestBody User user) { return userService.aveUser(user); } /** * 根据用户名和密码查询用户 * 2018年1月18日 */ @GetMapping("/findUser") public User findUserByNameAndPassword(String name ,String password) { return userService.findUserByNameAndPassword(name, password); }重启修改过的服务,查看服务注册是否正常
在启动过程中可以发现Feign服务启动报错:


为什么会报错呢?
这个方法有两个参数,而Feign去映射的时候它不会去自动给你区分那个参数是哪个,会直接给你报错
解决方法:添加注解,自己去指定要映射的属性
重新启动Feign服务:
启动成功!!!!
使用工具调用这几个方法进行测试
成功调用两个方法!!!!
Feign如何接收多个参数
feigin多个参数POST情况下
method(String str1,String str2,String str3);method2(String str1,@RequestParam Mapmap,String str3);
1.API
package com.hwasee.hsc.api.redis;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import java.util.Map;/** * @author limaojing * @date 2020-07-28 */public interface RedisMapAPI { //===============================Map=============================== @PostMapping("/redis/map/get") String getMap(@RequestParam(value = "key") String key, @RequestParam(value = "item") String item); @PostMapping("/redis/map/getAll") Map2.Feign
package com.hwasee.hsc.feign.redis;import com.hwasee.hsc.api.redis.RedisMapAPI;import com.hwasee.hsc.constants.ServiceConstants;import org.springframework.cloud.openfeign.FeignClient;/** * @author limaopeng * @date 2020-11-25 */@FeignClient(name = ServiceConstants.Services.SERVICE_REDIS)public interface RedisMapFeign extends RedisMapAPI {}3.controller
如果实现了API就不用添加,没有实现就要添加
package com.hwasee.hsc.redis.controller;import com.hwasee.hsc.redis.util.RedisUtil;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.List;import java.util.Map;import java.util.Set;/** * @author limaojing * @date 2020-07-28 */@RestController@RequestMapping("/redis")public class RedisController { @Autowired private RedisUtil redisUtil; @Autowired private RedisUtil.redisMap redisMap; @Autowired private RedisUtil.redisString redisString; @Autowired private RedisUtil.redisSet redisSet; @Autowired private RedisUtil.redisList redisList; //===============================Common=============================== @PostMapping("/changeDatabase") public void changeDatabase(Integer index){ redisUtil.changeDatabase(index); } /** * 指定缓存失效时间 * * @param key 键 * @param time 时间(秒) * @return */ @PostMapping("/expire") public Boolean expire(String key, Long time) { return redisUtil.expire(key, time); } /** * 根据key获取过期时间 * * @param key 键,不能为空 * @return 时间秒,返回0代表永久有效 */ @PostMapping("/getExpire") public Long getExpire(String key) { return redisUtil.getExpire(key); } /** * 判断key是否存在 * * @param key 键 * @return 存在返回true,不存在返回false */ @PostMapping("/hasKey") public Boolean hasKey(String key) { return redisUtil.hasKey(key); } /** * 删除缓存 * * @param keys 可以传一个值,或多个值 */ @SuppressWarnings("unchecked") @PostMapping("/del") public void del(@RequestParam String[] keys) { redisUtil.del(keys); } //===============================String=============================== /** * 获取缓存 * * @param key 键 * @return 值 */ @PostMapping("/string/get") public String getString(String key) { return redisString.get(key).toString(); } /** * 缓存存入 * * @param key 键 * @param value 值 * @return 操作成功返回true,失败返回false */ @PostMapping("/string/set") public Boolean setString(String key, String value) { return redisString.set(key, value); } /** * 普通缓存放入并设置时间 * * @param key 键 * @param value 值 * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 * @return 操作成功返回true,失败返回false */ @PostMapping("/string/setValueAndTime") public Boolean setValueAndTime(String key, String value, Long time) { return redisString.set(key, value, time); } /** * 递增 * * @param key 键 * @param delta 要增加的值 * @return */ @PostMapping("/string/incr") public Long incrString(String key, Long delta) { return redisString.incr(key, delta); } /** * 递减 * * @param key 键 * @param delta 要减小的值 * @return */ @PostMapping("/string/decr") public Long decrString(String key, Long delta) { return redisString.decr(key, delta); } //===============================Map=============================== /** * 取得对应键值 * * @param key 键 * @param item 项 * @return 值 */ @PostMapping("/map/get") public String getMap(String key, String item) { return redisMap.get(key, item); } /** * 获取hashKey对应的所有键值 * * @param key 键 * @return map形式返回键值对 */ @PostMapping("/map/getAll") public Map读到这里,这篇"SpringCloud Feign多参数传递的方法及需要注意哪些问题"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
缓存
时间
方法
成功
参数
用户
多个
个数
可设
服务
问题
数据
内容
文章
索引
查询
两个
中值
代表
元素
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技有限公司
互联网科技公司经营范围
互联网络科技有限公司
广州互联网络科技有限公司
奇士达互联网科技
融势互联网科技
广州善班互联网科技
佰商互联网科技有限公司
青海省互联网新科技
科技与互联网的利与弊
隆华科技工业互联网
北京大学互联网科技怎么样
互联网科技实习生岗位职责
厦门千工互联网科技有限公司
移动互联网年度科技创新
电子科技大学互联网创业大赛
广西互联网科技孵化中心
中和天地互联网科技有限公司
城市宝互联网科技有限公司
山东蛋芒互联网科技有限公司
朗新科技与工业互联网
互联网科技战争
致聘互联网科技
互联网之后的科技是什么
福州新华互联网科技学校 知乎
智腾互联网科技有限公司
广州市恰铎互联网科技有限公司
亚光科技低轨卫星互联网
互联网企业和网络科技有限公司
互联网科技快速发展优美句子