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 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同