在使用spring mvc的情况下,
你们传给前端(ios/android)的json数据由spring对Bean进行转换的吧?
那个这个Bean,都是定义好的java类?
因为感觉前端需要的json非常灵活,后台如果用几个大而全的bean来封装,前端会得到许多无用的字段。
(虽然可以控制序列化策略,让null值甚至是默认值的字段不出现在json中,但这样一来,字段不全,阅读性差些。)
而如果精细化bean,则需要创建太多的bean。
我们项目中基本采用map来构造需要的数据(主要也是因为用的jdbctemplate,查询出来的数据就是map类型的),不用定义bean类,虽然很灵活,但经常要手写key名,也是麻烦所在。
大家都怎么解决的?请不吝指教,谢谢!
首先Map的形式是最不推荐的。
前端需要的数据必定是灵活多变的,我们可以创建多个VO,DTO来满足不同的接口调用。
比如用户User中包含密码,而返回前端的数据不能包含密码等敏感字段,我们可以创建UserVO,返回不带密码的数据。你可以通过“领域驱动”进一步了解相关VO,DTO,PO等的区别和使用。
你可能会说,为表现层专门创建VO较为繁琐,bean之间的转换成了问题。
这里推荐使用mapstruct。mapstruct使用注解驱动完成转换代码的生成,你只需要提供Mapper接口即可。
比如User 和 UserVO 的转换: