第 2 章 ClearWork应用工具集

位于net.sf.clearwork.core.utils包中。

2.1. 基础工具

工具名称功能说明
MessageUtils 国际化工具类,获取国际化的消息资源,依赖于 spring.xml 中的 messageSource Bean。
ResourceUtils 系统应用资源类,用于获取系统的资源和一些路径,这包括应用的相对路径和系统的绝对路径。 支持regString参数查询,例如:
									
										classpath*:
										
											config/**/spring/*.xml
										
									
								
SpringContextUtils Spring上下文工具,主要提供getBean、getContext等功能
TestUtils提供一些调试的常用方法
BeanUtils Java Bean操作工具。它提供: 获取、设置私有属性; 执行私有方法; 获取超类; 获取类型的域名形式(即包名倒序)及其对应的XML Schema表示; 验证POJO(纯洁的Java对象,在Web Service中使用)类型等静态方法。
DateUtils 时间日期的工具类,提供常用的时间日期操作方法,可以看作是apache commons相应工具的有益补充。
NumberUtils 数值操作的工具类,提供常用的数值操作、格式化方法,可以看作是apache commons相应工具的有益补充。
StringUtils 提供常用的字符串操作方法,也包括字符编码转换、 HTML的encode/decode、URL的encode/decode等功能。
UniqueIdUtils / UUIDHexGenerator / UUIDUtils 这三种唯一ID生成工具可以在100~150线程并发的情况下安全的产生不重复的ID, 其格式分别为: XXXXXXXX-XXXXX / 32位字符串 / 49位字符串 。源代码内置多线程测试的main方法,可以根据测试的结果和系统的需求选择使用。
ImageUtils 图片处理工具,提供对类型 ImageFormat 枚举的图片格式的处理, 支持缩放、按比例缩放、缩略图、转存、获取图片信息、添加水印文字或图形等功能。 水印位置可参考枚举 WatermarkLayout 类。
DESUtils / RSAUtils / MD5Utils / SHAUtils 提供这四种加密算法的支持,可用于密码字符串加密。 注意:前两者是可逆的加密算法;后两者不可逆,即加密后无法解密。
WebUtils 继承自 org.springframework.web.util.WebUtils ,提供一些web层的通用工具方法。
XmlUtils 利用 W3C API构建的标准XML操作工具,同时还提供转换GBK编码格式XML文档的方法。

2.2. PopulateUtils——值注入工具

解决应用开发中普遍存在的场景——不同值对象之间同名域的注入(对应populate*方法)/拷贝(对应copyProperties*方法)。 populate方法支持将来自HTTP Post的表单数据注入值对象、将来自JDBC RecorderSet的记录集注入值对象、对两个值对象同名属性域值的拷贝等操作。

工具的通用规则:

  • 需要相互注入拷贝的域(field)必须同名,但不区分大小写。

  • 支持nameMapper参数,域名称转换映射

  • 支持ignoreProperties参数,忽略的属性域列表

  • 可以开发插件转化特殊的数据类型,例如默认的DatePopulatePlugin被用来支持如下转换:

    							
    		<property name="plugins">
    			<map>
    				<entry key="java.sql.Date->*">
    					<ref local="datePopulatePlugin" />
    				</entry>
    				<entry key="java.sql.Timestamp->*">
    					<ref local="datePopulatePlugin" />
    				</entry>
    				<entry key="*->java.util.Date">
    					<ref local="datePopulatePlugin" />
    				</entry>
    			</map>
    		</property>
    							
    						

    它依赖于 spring.xml 中的 populateUtils Bean。值转化插件需要实现IPopulatePlugin接口。 关于如何开发值转化插件建议参考类 net.sf.clearwork.core.utils.bean.DatePopulatePlugin 的源代码。

  • 支持集合或数组的值对象拷贝。

您可以通过查看Populate Sample( net.sf.clearwork.sample.populateutils.SamplePopulateAction )来具体了解ClearWork值注入工具的应用。

2.3. ContextUtils——上下文管理框架工具

ClearWork框架中获取上下文的入口类型 net.sf.clearwork.core.utils.context.ContextUtils ,它提供三组功能:

  1. getDataChannelContext,获取线程级(即同一线程)的上下文,基本上相当于ThreadLocal这样的容器。

  2. getUserDataContext,获取用户级(即连接Web应用的同一用户)的上下文,基于HttpSession的容器。

  3. getApplicationContext,获取应用级(即整个应用程序全局)的上下文,基于内存中缓存的容器。

拥有了所需的上下文资源(此资源实现 net.sf.clearwork.core.utils.context.IContext 接口)句柄,即可对其进行增删改查等属性操作,例如:将用户信息对象放入用户级上下文;将事务操作对象放入线程级上下文等。