[size=0.76em]下面将使用已定义好的 Annotation 注解,用标签修饰类文件。 [size=0.76em]1. 以访问关系数据库为例,建立国家对象的国家名称属性 name 与数据库字段之间的 OR 映射。类 CountryBean 的属性及方法如图所示。
图 5.CountryBean 类图
[size=0.76em]用标签来对“国家名称”name 属性进行配置,标签声明如下:
清单 1. 使用标签配置属性实例一
@Text( connector=@Connector(name="ds",type=ConnectorType.RelationDatabase),key="id", configs={ @Config(locale="en_US",table="country",column="country_en",keyValueField="id"), @Config(locale="zh_CN",table="country",column="country_ch",keyValueField="id")} ) |
[size=0.76em]连接器属性 @Connector 表示以访问数据库的方式读取属性值,数据源的名称是"ds"。key="id"表示该数据库表的关键字段是 id 字段,它标识该表内的唯一记录。 [size=0.76em]国际化配置项 @Config 表示 name 属性与数据库的映射关系。配置项数组分别定义了英文、中文环境下该国家名称属性对应的表,字段,和决定该属性值的关键字段。以英文环境为例,要得到 name 值,需要查询 country 库表的 country_en 字段,并由 id 字段确定是哪一条记录。其中 locale="en_US"表示它为英文环境的配置信息,映射 country 表的 country_en 字段,关键字段为 id。 [size=0.76em]2. 以资源文件为例,建立国家对象的国家名称属性 name 与资源文件中英文国家名称之间的映射。
清单 2. 使用标签配置属性实例二
@Text(connector=@Connector(name="myresource",type=ConnectorType.PropertiesFile), key="country_name", configs={@Config(locale="en_US"),@Config(locale="zh_CN")} ) |
[size=0.76em]连接器属性 connector 的配置表示资源为名为 myresource 的资源文件,key 表示关键字是 country_name,国际化配置项 Config 的配置分别表示中英文资源文件的后缀。 [size=0.76em]国际化资源处理器的设计和实现 [size=0.76em]如图 5 所示,是处理器接口,及两个处理器实现类之间的关系类图。
图 6. 国际化处理器类图
[size=0.76em]设计出的国际化处理器由一个接口,两个实现类组成。处理器接口 Handler 用于抽象出资源访问的公共方法,包括初始化方法、处理方法。下面对两种处理器的功能进行描述。 [size=0.76em]功能:根据关键字 key,从资源文件 source 中获取静态信息的属性值。其类图如图 7 所示。
图 7. 资源文件国际化支持处理器类图
[size=0.76em]关键代码如下所示:
清单 4. 资源文件国际化支持处理器 handle() 方法关键代码
Properties properties = new Properties();// 加载资源文件 properties.load(resource.getInputStream()); Object retVal = properties.getProperty(key); // 根据关键字取得属性值 |
- 关系数据库国际化支持处理器
[size=1em]功能:从关系数据库中存取动态信息。获取对象属性标签中的 OR 映射配置信息,在关系数据库中查询该属性。其类图如图 10 所示。
图 10. 关系数据库国际化支持处理器类图
[size=1em]属性:该处理器有 5 个属性,tableName 为数据库表名称,columnName 为与属性一一映射的字段名称,keyName 为该表的关键字段,keyValue 为确定唯一记录的关键字段的值。以上 4 个属性,为访问数据库提供支持,通过它们拼装完整的 SQL 语句。DataSource 是数据源名称。 - initial() 初始化方法的设计和实现
[size=1em]目的:用于初始化关系数据库国际化支持处理器,设置与访问数据库相关的 5 个属性的初值。其中 tableName、columnName 由参数 config 标签中的 table、column 配置信息获取。keyName 由参数 text 标签的属性 key 获取。DataSource 由参数 text 的连接器属性 Connector 的 name 中的配置信息获取。 [size=1em]关键代码实现如下所示:
清单 5. 关系数据库国际化支持处理器 initial() 方法关键代码
String dsName = text.connector().name();// 由 text 标签获得数据源名称 DataSource dataSource = (DataSource) context.getBean(dsName); setDataSource(dataSource); // 设置数据源 setColumnName(config.column());// 设置属性对应字段名称 setTableName(config.table());// 设置要访问的数据库表名称 setKeyName(text.key());// 设置关键字段名称 |
- handle() 处理方法的设计和实现
[size=1em]该方法比较简单,根据已有的数据库访问信息访问数据库即可,可以使用利用 JDBC API,也可 Hibernate 等其它 DAO 框架。
|