Spring中Controller的继承架构如下图所示。
由于Java不支持多重继承,直接导致了MutilController和SimplFormController不能直接同时使用;而这两者又是项目中很需要的Controller。因此需要考虑整合的问题。
网上可以搜到一些整合方案,但我这里谈一下另外的途径,即自己封装SimpleFormController的功能。
SimpleFormController的功能无非是利用反射配置,而且我记得Spring对自己的反射功能并未优化。虽然反射所多耗费的几十毫秒对一个大系统而言并非瓶颈所在,但如果能预留提升空间可以防备不时之需。
另外SimpleFormController的形式仍有改进余地,起码可以自己在配置过程中进行合法性判断。如下函数
Convert(request, rules, new Object())
rules可以有如下的形式{“username-string”, “password-string-null2empty”}.
该rules指示了从request中提取username参数和password参数,并且如果password参数为null,则装换为””。
显见request与object为1对1的映射,即只要request确定,可以唯一确定一个类的实例,通过转换规则rule。
类似的1对1的映射还出现在网络传输中。将接收到的byte[]通过定义好的规则,转换为一个类的实例。规则可以写成如下的格式{“4*int*big-endian*username”, ”4*int*little-endian*password”},其中指定了字段所占的字节数,字段类型,网络编码或者主机编码,以及字段名。其中字段名项可要可不要,依赖于是否采用反射方式配置对象实例。
文件类型判断也可以采用相应的技巧。读取文件的前n个byte,直接按照一定规则将其装配成实例,进而判断文件类型。
问题的“眼”在规则转换。当将需求转换为实现的规则一定,则将转换过程黑匣化。输入需求,则直接转换为需要的实现。只不过此需求不像1+1那么简单。
类似的,Object2byte[]也是一种规则转换,easy。
- 大小: 12.1 KB
分享到:
相关推荐
金蝶通过变量选择单据转换规则.doc
国际民航组织特殊字符转换规则.pdf
C语言隐式类型转换规则。了解一下对写程序有好处,可以防止不必要的错误
英语词性转换规则大全.pdf
E-R图向关系模式的转换规则.pdf 学习资料 复习资料 教学资源
该文档描述了oracle数据的转换的一些规则,如字符和数字的转换,字符和日期的转换
python的强制类型转换规则 Python的强制类型转换规则 Python是一种动态类型语言,这意味着变量的类型是在运行时确定的。在Python中,变量可以随时被赋予不同类型的值,这使得Python非常灵活和易于使用。但是,有时候...
2、可通过excel表格来直观的配置转换规则,包括列宽、颜色、字体等都支持继承下来 3、支持重复单元格多种处理方式,如不重复、合并单元格等 4、兼容性强大,一次配置,N次使用,需要改变转换规则,只需修改配置即可 ...
类的转换,C++的内部数据类型遵循隐式类型转换规则,成员转换函数
汇编指令与机器码的相互转换规则,说白了,就是如何手工把汇编语言转换为及其语言、、、主要就是解决这个问题~~欢迎下载来参考下~~
ORACLE数据库开发,Oracle数据隐式转换规则。
进制转换规则.pdf
转换规则详细设计说明1
字符编码之间的转换规则与实现
iPro转RiPlus插件可实现 Ripro文章一键转为 RIPlus文章,很不错的一套插件做源码站的站长可以下载使用。 可选择对应转换规则。省去重装网站或者手动改文章资源的麻烦。
分享E-R图转换规则,帮助解决转换问题!
国际民航组织特殊字符转换规则.doc
业务流程可以约束多个单据之间数据转换,而单据转换规则定义的是两个单据之间的转换关系,我们把仅依据单据转换规则进行流转的流程叫做自由流程。 从用户使用角度说,若是新建单据时,将业务流程字段设为空,则表示...