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 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办
  • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了
  • ¥20 firefly-rk3399上启动卡住了
  • ¥15 如何删除这个虚拟音频