ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:369.35KB ,
资源ID:4597290      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4597290.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于AOP的动态数据国际化框架的设计与实现.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于AOP的动态数据国际化框架的设计与实现.docx

1、基于AOP的动态数据国际化框架的设计与实现基于AOP的动态数据国际化框架的设计与实现1. 已存在的动态数据国际化解决方法不易于移植和复用。2. 没有现成的动态数据国际化解决方案或框架。针对以上问题,需要提出一个动态数据国际化的解决方案。为了在短时间内,规范高效的构建出国际化的网络春季轻量级框架的J2EE架构的网络应用国际化框架,简化系统国际化的实现过程。目标是:1. 使该国际化框架适用于关系数据库或对象关系数据库。2. 3. 新的框架要易于配置。4. 框架的代码可以复用,能有效地提高系统的开发效率。动态数据国际化框架模型的设计与实现总体设计本框架基于J2EE的三层架构(UI层,逻辑层和持久层)

2、,如图1所示。所有层次都应遵循统一准则,即内部编码采用统一标准,B / S架构的推荐使用UTF-8编码。图1。基于B / S模式的国际化总体逻辑框架图2。动态数据国际化框架设计该容器由国际化配置的注解,DAO层资源处理器和充当过滤器的角色,实现国际化公共增强功能的方面这3部分组合而成。该容器中,国际化看点,主要根据实体豆的注释标签判断访问哪种资源,采用哪种资源处理器进行处理。该容器中,DAO层的资源处理器,主要根据实体Bean的注释中的配置信息,对资源进行存取访问操作,获取资源。分层结构是基于B / S架构的Java EE的该框架有以下几点优势:1. 不依靠资源的持久化方式;可使用资源文件或关

3、系数据库存储信息。用关系数据库存储时,无论是单表还是分表,都可以完成数据存取。2. 国际化功能与业务逻辑解耦;编程人员可以专注于核心的BO3. 坚持以面向对象的设计为主,AOP设计为辅,可缩减代码,控制的开发的成本;4. 用注解实现对象关系数据库间的一一映射。它管理的Java类到数据库表的映射,在的JavaBean中只嵌入注解标签即可,与国际化有关的代码完全提取到注解的实现豆中的,JavaBean中完全不使用国际化相关代码,方便复用和调试。模型实现框架的运行时序图如图3所示:图3。动态元素国际化方面序列图分析上面的运行时序可知:1. 首先由业务逻辑层对象调用获取实体Bean的属性值的方法。2.

4、 如果该方法有国际化标签,需要国际化支持,则织入I18NAspect方面,进行国际化功能增强。3. 根据属性的注解配置,由相应的处理器进行处理。4. 最后把取得的资源值返回给实体类的属性。至此完成国际化功能的织入,然后BO层可以继续执行核心业务逻辑。下面就逐个组件实现以上功能。注释注解提供国际化配置本框架中的注释用于对类或属性提供国际化的配置信息。共定义5个注解:ConnectorType,连接器,配置,文本和本地化。它们之间的关系类图如图4所示:图4。注释类图1. ConnectorType国际化资源连接类型。此标签与连接器联合使用。功能:用于标识国际化RelationDatabase:标识

5、从数据库中读取动态国际化信息数据。PropertiesFile:标识从资源文件中读取静态国际化数据。2. 连接器连接器,此标签与文字联合使用。功能:负责连接关系数据库,或是资源文件。类型:连接类型,决定本地化资源处理方法,由ConnectorType定义,只可能有读取资源文件或访问数据库两种方式。产品名称:连接名称,当访问资源文件时,名称表示资源文件的名称。当访问数据库时,名称表示连接数据的数据源名称,可以根据名称从春季的配置文件中依赖IOC获得数据源连接的相关配置。3. 配置类属性的国际化配置项。此标签与文字联合使用。功能:对象和关系数据库表的映射工具,实现的Java对象模型和数据库关系模型

6、的互相转化和一一映射。它包含4个属性。标签中的语言环境是必选项,指出了所支持的对国家/语言环境。表,列keyValueField;4. 文字作用在类的属性上,对属性进行国际化配置。功能:建立不同语言环境下对象和数据库OR映射,或建立对象与资源文件中记录的对应关系。Key:主键,表示唯一记录,若数据库访问则表示确定该属性的唯一关键字段,若读取资源文件则表示该属性对应的键值。连接器:连接器的属性,表示连接关系数据库,还是资源文件。CONFIGS:配置项“数组,每一条配置的项对应一种语言的国际化支持。CONFIGS 0为英文配置信息,CONFIGS 1为中文配置信息。5. 国际化defaultLoc

7、ale定义了默认的语言环境,初始值是“EN_US”。下面将使用已定义好的注解注解,用标签修饰类文件。1。以访问关系数据库为例,建立国家对象的国家名称属性名称与数据库字段之间的OR映射类CountryBean的属性及方法如图所示。图5.CountryBean类图用标签来对“国家名称”的名称属性进行配置,标签声明如下:清单1。使用标签配置属性实例一 文本( 连接器= 连接器(名称=“DS”,类型= ConnectorType.RelationDatabase),键=“身份证” CONFIGS = 配置(区域“EN_US”,表=“国家”,列=“country_en”,keyValueField =“

8、ID”), 配置=“国家(区域=”zh_CN的“表”,列=“country_ch”的keyValueField =“ID”) ) 连接器属性连接器ID字段,它标识该表内的唯一记录。国际化配置项配置表示名称名称值,需要查询国家库表的country_en字段,并由ID字段确定是哪一条记录,其中的语言环境=“en_US”表示表示它为英文环境的配置信息,映射国表的country_en字段,关键字段为ID。2。以资源文件为例,建立国家对象的国家名称属性名称与资源文件中英文国家名称之间的映射。清单2。使用标签配置属性实例二 文本(连接器= 连接器(名称=“myresource的,类型= Connector

9、Type.PropertiesFile) 关键=“COUNTRY_NAME”,CONFIGS = 配置(区域=“en_US”表示),配置(区域=“ZH_CN”) ) 连接器属性连接器的配置表示资源为名为myresource的资源文件,键表示关键字是COUNTRY_NAME,国际化配置的项配置的配置分别表示中英文资源文件的后缀。国际化资源处理器的设计和实现如图5所示,是处理器接口,及两个处理器实现类之间的关系类图。图6。国际化处理器类图设计出的国际化处理器由一个接口,两个实现类组成。处理器接口处理器 资源文件国际化支持处理器功能:根据关键字的关键,从资源文件的源中获取静态信息的属性值。其类图如图

10、7所示。图7。资源文件国际化支持处理器类图1. 初始()初始化方法的设计和实现目的:用于初始化资源文件的国际化支持处理器,设置资源文件名资源和关键字键的值。资源文件的国际化支持处理器初始化功能状态图如图8所示。图8。资源文件国际化支持处理器初始化功能状态图关键代码实现如下所示:清单3。资源文件国际化支持处理器的初始()方法关键代码 弦乐rsName = text.connector的()名();/ /由配置标签文本中读取资源文件名称 / /获取资源文件 资源资源= context.getResource( “类路径:的”+ rsName +“_”+ config.locale()+“物业”);

11、 setResource(资源); / /设置资源文件 SETKEY(text.key();/ /读取配置标签,设置关键字的关键值2. 处理()处理方法的设计和实现资源文件国际化支持处理器手柄()方法功能流程如图9所示。图9。资源文件国际化支持处理器手柄()方法功能状态图关键代码如下所示:清单4。资源文件国际化支持处理器手柄()方法关键代码 属性属性=新的属性();/ /加载资源文件 properties.load(resource.getInputStream(); retVal的对象= properties.getProperty(键)/ /根据关键字取得属性值; 关系数据库国际化支持处理

12、器功能:从关系数据库中存取动态信息。获取对象的属性标签中的OR映射配置信息,在关系数据库中查询该属性。其类图如图10所示。图10。关系数据库国际化支持处理器类图属性:该处理器有5个属性,TABLENAME为数据库表名称的ColumnName为与属性一一映射的字段名称,KEYNAME为该表的关键字段,的keyValue为确定唯一记录的关键字段的值。以上4个属性,为访问数据库提供支持,通过它们拼装完整的SQL语句,数据源是数据源名称。 初始()初始化方法的设计和实现目的:用于初始化关系数据库国际化支持处理器,设置与访问数据库相关的5个属性的初值。其中TABLENAME的ColumnName由参数配

13、置标签中的表,列配置信息获取。KEYNAME由参数文本标签的属性键获取DataSource的由参数文本的连接器属性连接器的名称中的配置信息获取。关键代码实现如下所示:清单5。关系数据库国际化支持处理器的初始()方法关键代码 弦乐的dsName = text.connector()名();/ /由文本标签获得数据源名称 数据源数据源(数据源)context.getBean(的dsName); 的setDataSource(数据源); / /设置数据源 setColumnName(config.column();/ /设置属性对应字段名称 setTableName(config.table();/

14、 /设置要访问的数据库表名称 setKeyName(text.key();/ /设置关键字段名称 处理()处理方法的设计和实现JDBC API,也可休眠等其它DAO框架。国际化方面的设计与实现国际化方面要实现封装国际化功能,使其与核心业务逻辑分离解耦。AOPI18NAspect实现国际化增强。如图11所示,方面I18NAspect图11。对象,连接点方面,数据对象耦合结构图可以把看点简单地理解为一个忠告增强和一个切入点切入点的组合,如图11所示,每个切入点实现都会对应有一个实现的建议。忠告用于封装需要增强的国际化功能; Ponintcut用于定义何时,何处将建议织入到目标对象的,只对符合条件方

15、法的增强。图12。看点运行机制流程图1. 声明看点Spring 2.0中引入了AspectJ中的注解,可以通过Java 5的注解以AspectJ中的语法在春季中配置AOP。AspectJ的是目前最完善的AOP的解决方案,它扩展了Java的语法,定义了额外的AOP语法关键字,它提供了AOP技术的所有特性,包括针对字段的拦截。使用AspectJ的注解实现AOP的最大的优点是配置极为简单,可以大大简化代码的编写和XML配置文件的用AspectJ注解实现AOP的方面定义为:看点公共类I18NAspect实现ApplicationContextAware .该类被标记为纵横,表示这是一个方面类。下面,将

16、对I18NAspect进行详细设计,为其添加咨询和切入点。2. 定义看点的忠告声明的i18nAspect方法有个ProceedingJoinPointjointPoint的proceed()方法13所示:图13。国际化方面建议功能流程图建议的关键代码如下所示:清单6。关系数据库国际化支持处理器的初始()方法关键代码 类= jointPoint.getTarget()的getclass();/ /获取目标类 obj对象= jointPoint.getTarget();/ /获取目标对象 retVal的对象= NULL; / /声明对象属性的返回值 / /当前处理的类是否需要国际化支持 (c.is

17、AnnotationPresent(I18N.class) / /取得全部商情字段,筛选出标记了文本的字段 现场栏= c.getDeclaredFields(); / /设置环境语言变量 弦乐defaultLocale =( (I18N)c.getAnnotation的(I18N.class)。defaultLocale(); 弦乐progSetLocale = LocaleContextHolder.getLocale()。的toString(); (progSetLocale = NULL)progSetLocale = defaultLocale; 配置usingConfig = NUL

18、L; (现场传真:字段) (f.isAnnotationPresent(Text.class) / /如果存在文字标记,则进行国际化处理 文字文本= f.getAnnotation(Text.class); Object值= f.getName(); / /取得所有配置信息,并确定使用的配置信息 配置的configs = text.configs(); (配置配置的configs) configLocale = config.locale(); 如果(configLocale.equals,(progSetLocale) =配置usingConfig; 打破; 如果(usingConfig =

19、 NULL) 布尔标志= FALSE; 弦乐T = text.connector的()。类型();/ /处理映射 如果(t.equals,(ConnectorType.RelationDatabase) / /应用已注入的关系数据库处理器处理映射 如果(旗=真)值= rdbHandler.handle(); 的 else if(t.equals(ConnectorType.PropertiesFile) / /处理资源文件映射 如果(旗=真)值= propHandler.handle(); (真f.setAccessible);/ /开启设置字段值 f.set(OBJ,价值); / /设置字段

20、值 (假f.setAccessible);/ /关闭设置字段值 retVal的jointPoint.proceed的(); retVal的jointPoint.proceed的(); 返回retVal的; 定义看点的切入点Ponintcut执行匹配方法执行时的切入点,表达式如下:执行(修饰符?返回类型声明类型?方法名称(参数类型)异常类型?)例如,为所有类的获得方法添加一个i18nAdvice (左右“执行(*()”) 公共对象i18nAdvice(ProceedingJoinPoint jointPoint的) . 在执行所有类对象的获取方法之前,系统关注点i18nAdvice将完成国际化公

21、共功能,达到织入国际化管理逻辑的目的。动态数据国际化框架的应用本文研究的框架,已经完整应用于一个基于J2EE的的网络应用系统。系统的中,英文运行界面如图14,15所示。图14。中文的Web应用运行效果图15。WEB应用英文运行效果图16。网络应用气象信息模块的中文运行效果图17。网络应用气象信息模块的英文运行效果结论本文旨在生成一种基于J2EE架构的网络应用动态数据国际化框架。本框架通过以下方法实现了创新:1. 使用注释注解提供国际化配置,完成对不同语言环境下,不同持久化方式下的地区/语言信息的封装。2. 3. 借助弹簧的AOP技术,设计并实现了封装国际化功能的看点方面,将国际化相关的操作提取到方面中,使其与核心业务逻辑分离。该方案已成功应用于“运动会综合信息查询系统”中。通过使用本框架使用,可以实现高效的国际化软件开发,减少本地化过程所需要的时间和精力,降低软件维护成本。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1