SpringCloud Feign多参数传递的方法及需要注意哪些问题
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,本文小编为大家详细介绍"SpringCloud Feign多参数传递的方法及需要注意哪些问题",内容详细,步骤清晰,细节处理妥当,希望这篇"SpringCloud Feign多参数传递的方法及需要注意
千家信息网最后更新 2024年11月24日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") Map
2.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安全错误
数据库的锁怎样保障安全
如何登录ftp服务器
软件开发可持续环境发展
华为服务器连不上管理口
KISS视频软件开发
期刊数据库技术工作
商用服务器安装系统
天津软件开发设施推广
服务器ip大全
数据库迁移通知
联通 网络安全进社区
云服务器和本地服务器配置一样吗
抖音拉新网络技术分享
宝山区品牌人工智能应用软件开发
利用网络技术如何赚钱
服务器怎么vpn
杭州云网络技术包括什么
长沙直播软件开发价格
路由器管理软件开发技术
java调用数据库
数据库r锁
全球数百专用服务器提供加百度
服务器双cpu如何加水冷
普洱市网络安全执法案例
SQL数据库数据页
列出数据库设计过程的要求和步骤
华为网络安全技术部署
计算机网络技术应用学些什么
cvi使用什么软件开发
北京挑选软件开发公司
网络技术人员网络安全