SpringCloud Feign多参数传递的方法及需要注意哪些问题
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本文小编为大家详细介绍"SpringCloud Feign多参数传递的方法及需要注意哪些问题",内容详细,步骤清晰,细节处理妥当,希望这篇"SpringCloud Feign多参数传递的方法及需要注意
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
PS5重建数据库多了
qq的缓存照片恢复数据库
软件开发网络语言
批量管理远程服务器
深空之眼服务器维修中
泽思网络安全知识
我的世界无法启动原生服务器
天刀陌上花开服务器
erp软件开发费入什么科目
数据库连接方式有几种
网络安全教育简报信息
大学生自己如何重视网络安全
网络技术有哪几种
应用于网络安全管理的技术
mac 搭建数据库
软件开发计算机培训学校怎么收费
两台电脑的数据库怎么关联
中国网络技术受制于美国吗
长宁区一站式网络技术代理品牌
机房服务器建设方案
软件开发结合节目
银行数据库的数据安全吗
搭建unix服务器
天津网络技术有限公司待遇
服务器bios如何查看内存扩展
广州安卓软件开发代码
关于网络安全方面的信息战有哪些
众诚软件开发
懂网络技术的人
网络安全监督工作总结