/**获取角色对应权限*/
@RequestMapping("/listByRoleId")
public CommonResult<List<MenuVo.ListByRoleIdVo>> listByRoleId(@Valid MenuParam.ListByRoleIdParam param){
return menuService.listByRoleId(param);
}
@Data
public static class ListByRoleIdParam {
@NotNull(message = "不能为空")
private Integer roleId;
}
@Data
public static class ListByRoleIdVo {
private Integer menuId;
private String name; //名称
private Integer pid; //父id
}
我现在项目里面使用上面这种形式来写代码.每个方法的参数定义成一个类.方法的返回值也定义成一个类.这样写主要是想使用valid来做参数校验,将参数封装成一个对象也方便使用反射来调用方法.
这样就会导致项目里面有很多这种参数和返回值的类.请问这种写法出了类定义的多点,还有什么不好的地方? 会影响性能吗?
4 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
谢邀。有很多这种参数和返回值的类
,其实即使你不做校验用,也应该这么写,参数封装成对象理所当然,只不过很多类有业务重复的情况下可以抽象、继承的方式来做。因为业务需求问题,校验多种多样,代码这种bean变多,其实也没什么影响,只想便于维护就好;
慕码人2483693
TA贡献1860条经验 获得超9个赞
显然是太灵话, 修改逻辑要重新定义类, 类的序列化缓存也要考虑升级时的版本兼容的问题.
要看有多少,几十个的话不用太在意. 好处是有强类型验证.
如果很多的话建议还是用抽象的Map来存参数. 这样可以把参数与逻辑剥离.
慕容3067478
TA贡献1773条经验 获得超3个赞
如果确实有这个需求的话,不为特定的接口参数写对应的数据类,也得写一串JSON解析代码,相较而言写类是更好的方式。
也可以考虑使用GraphQL来设计接口的参数,不过也要写Scheme,但是更为灵活
添加回答
举报
0/150
提交
取消