vbliker 2023-01-31 16:42 采纳率: 83.3%
浏览 117
已结题

Java 关于 controller 用 map 接收值 的问题

今天看 MyBatis-Plus 看到有一句话不明白:

不支持以及不赞成在 RPC 调用中把 Wrapper 进行传输
wrapper 很重
传输 wrapper 可以类比为你的 controller 用 map 接收值(开发一时爽,维护火葬场)

1、不理解 传输wrapper 是什么东西
2、为什么用 map 接收 json 会出问题

3、我这样写有什么隐患吗

    @GetMapping
    public static Map<String, String> getList() {
        Map<String, String> map = new ConcurrentHashMap<>();
        map.put("CDN", createLine("yesno", "CDN网站","").toString());
        map.put("模块", createLine("dropdown", "","php,iis").toString());
        map.put("web配额", createLine("text", "MB","").toString());
        return map;
    }

    /**
     * 用于构建 “Value”
     */
    private static List<String> createLine(String type, String description, String options) {
        List<String> ansList = new ArrayList<>();
        if (!type.isEmpty())  ansList.add("Type = " + type);
        if (!description.isEmpty()) ansList.add("Description = " + description);
        if (!options.isEmpty()) ansList.add("Options = " + options);
        return ansList;
    }

输出结果如下:

{
    "连接数": "[Type = text]",
    "FTP": "[Type = yesno, Description = 是否允许ftp]",
    "附加参数": "[Type = text]"
}

  • 写回答

2条回答 默认 最新

  • 小飞LOVE霞 2023-01-31 17:16
    关注

    1、RPC是远程过程调用,也就是说http协议中的数据体,在加了wrapper之后会变大,占用带宽。
    2、● JavaBean的数据在编译期就会对其进行校验,如果出错会直接提示。而Map的数据则需要到sql层才会进行处理检验。因此如果map的参数名称写错、参数值如果多传乱传只能到sql层才会被发现。
    ● Map中所拥有的参数个数、类型、每个参数代表的含义对外不透明,团队开发及后期维护难度大
    3、

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月22日
  • 创建了问题 1月31日

悬赏问题

  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目