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
分享到:
相关推荐
在金蝶系统中,"通过变量选择单据转换规则"是一种高级定制功能,主要用于处理复杂的业务逻辑,特别是在处理不同业务场景下需要应用不同转换规则的情况。这个功能主要应用于二次开发("二开"),允许企业根据自身特定...
### C语言隐式类型转换规则详解 #### 一、引言 C语言作为一种广泛使用的编程语言,具有严格的类型检查机制。在C语言中,不同类型的数值可以通过类型转换来进行混合运算。这种转换分为两种:隐式类型转换和显式类型...
这些转换规则是学习英语的基础,可以帮助人们灵活地运用词汇,提高语言表达能力。以下是文件内容中提到的一些词性转换规则和相关知识点: 1. 名词与动词的转换:有些单词既可以作名词也可以作动词,使用时要根据...
国际民航组织特殊字符转换规则.pdf
本文将详细介绍E-R图向关系模式的转换规则。 1. **实体集转换为关系**: - **实体集**在E-R图中对应于一个**关系**。关系的名称通常取自实体集的名称,其属性包括实体集的所有属性,主键则由实体集的主码确定。...
进制转换规则讲解 进制转换是计算机科学中的一种基本操作,它将一个数字从一种进制转换为另一种进制。在计算机科学中,常见的进制有二进制、八进制、十进制和十六进制。本资源讲解了进制转换的规则,包括二进制、八...
Oracle 数据隐式转换规则 Oracle 数据隐式转换规则是指在 Oracle 数据库中,当不同的数据类型之间关联时,如果不显式转换数据,则 Oracle 会根据以下规则对数据进行隐式转换。 规则 1: 在 INSERT 和 UPDATE 操作中...
3. **配置转换规则**:进入插件设置,选择适合你网站的转换规则。这可能包括文章样式、图片处理方式、短代码转换等。 4. **执行转换**:在确认所有设置无误后,运行转换过程。插件会按照设定的规则处理RiPro的所有...
这种转换通常分为两种类型:转换构造函数和成员转换函数,这两种方法都遵循C++的隐式类型转换规则。 首先,转换构造函数是一种特殊的构造函数,它的作用是将非本类类型的对象转换成本类的对象。在给定的代码示例中...
### 西可卡号转换规则知识点详解 #### 一、背景介绍 在IT行业中,针对特定硬件设备的使用,往往需要遵循一定的规范和技术文档来进行操作。例如,对于西奥科技(香港)控股有限公司生产的S210D感应ID卡读卡设备而言...
本文主要介绍了二进制、八进制、十进制和十六进制之间的转换规则。 二进制(Binary)是计算机的基础,只使用0和1两个数字,遵循“逢二进一”的原则。例如,二进制数1010表示十进制中的10(1*2^3 + 0*2^2 + 1*2^1 + ...
基于粒子群算法的矢量元胞自动机转换规则获取 particle swarm optimization (PSO) algorithm is used to automatically obtain the transformation rules of vector cellular automata (VCA). The PSO algorithm ...
本篇文章将深入探讨字符编码的转换规则及其实现方法。 首先,我们要了解几种常见的字符编码体系:Ansi(通常指Windows默认的ANSI编码,即ASCII扩展)、Unicode和UTF-8。ASCII是最基础的7位字符编码,可以表示128个...
Python是一种动态类型的语言,它的类型...总的来说,理解并熟练运用Python的强制类型转换规则是编写健壮、可维护代码的关键。通过适当的类型转换,我们可以确保数据在不同的操作中保持正确的形式,从而实现预期的功能。
2、可通过excel表格来直观的配置转换规则,包括列宽、颜色、字体等都支持继承下来 3、支持重复单元格多种处理方式,如不重复、合并单元格等 4、兼容性强大,一次配置,N次使用,需要改变转换规则,只需修改配置即可 ...
元胞自动机的核心在于定义转换规则,这些规则决定了元胞在下一步的状态如何根据当前状态和邻居状态变化。然而,传统的CA转换规则获取方法通常基于线性假设,它们无法充分捕捉和表述地理现象的非线性特性。 核学习机...
本篇文章将详细阐述这三个函数的转换规则。 首先,我们来看`Number()`函数。这个函数可以尝试将任何类型的值转换为数字。如果输入的是一个字符串,`Number()`会尝试解析它作为数字。例如,`Number("123")`将返回...
自由流程主要基于单据转换规则,没有严格的流程图约束,单据可以直接依据这些规则在不同节点间流转。当用户新建单据时,如果将业务流程字段设为空,那么该单据就会按照自由流程进行流转。自由流程的反写规则加载适应...