CN113805863A - 一种基于Java反射技术实现数据校验的方法 - Google Patents
一种基于Java反射技术实现数据校验的方法 Download PDFInfo
- Publication number
- CN113805863A CN113805863A CN202111178089.7A CN202111178089A CN113805863A CN 113805863 A CN113805863 A CN 113805863A CN 202111178089 A CN202111178089 A CN 202111178089A CN 113805863 A CN113805863 A CN 113805863A
- Authority
- CN
- China
- Prior art keywords
- annotation
- reflection
- code
- verification
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000013524 data verification Methods 0.000 title claims abstract description 8
- 238000005516 engineering process Methods 0.000 title claims abstract description 6
- 238000012795 verification Methods 0.000 claims abstract description 41
- 230000008878 coupling Effects 0.000 abstract description 2
- 238000010168 coupling process Methods 0.000 abstract description 2
- 238000005859 coupling reaction Methods 0.000 abstract description 2
- 230000007547 defect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种基于Java反射技术实现数据校验的方法涉及计算机技术领域,本发明实现需要四个步骤,分别是:为代码添加注解;为注解添加校验算法;获取反射内容;根据反射的注解选用校验算法,根据反射的内容对代码进行校验;本发明的方法预设各种个性化校验规则以满足不同的业务场景,且校验规则只需在校验数据对应的实体类上增加自定义注解属性,提高代码的可读性以及简洁性;同时通过反射机制方便的校验各类数据,调用同一校验方法,可降低业务代码和校验功能代码的耦合度。
Description
技术领域
本发明涉及计算机技术领域。
背景技术
Java反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。
开发者社群说到动态语言,认同的定义是:程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。从动态语言定义看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。尽管在这样的定义与分类下Java不是动态语言,它却有着一个非常突出的动态相关机制:Reflection。Reflection用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造,并生成其对象实体,对其fields设值,唤起其methods。JAVA语言这种看透class的能力被称为内省introspection。Reflection和introspection是常被并提的两个术语。
在软件系统中,不同的业务系统之间往往要进行数据的交流,共享,这就涉及到数据的传输与对接。传统的方法是数据的传输方通过接口或者文件等方式将数据发送给数据的接收方,数据的接收方按照特定的方式进行解析转化为Java对象,然后根据Java对象的get()方法获取对应的字段数据,从而实现判断该项数据的合法性以及正确性。当需要检测的数据项少且校验简单常见时,传统的方法可行。但是当数据类型多或者数据校验存在个性化时,传统的方法的弊端可扩展性差,无法复用就显露出来。当用户需求发生改变,需要增加某些数据类型时,唯一的方法就是修改程序,新增实体类以及具体的校验方法来做数据校验,然后升级程序来实现,无法做到随需应变,大大限制了程序的通用性,易用性和扩展性。故如何对多种数据类型在系统之间进行传输校验,提高程序的通用性,易用性和扩展性,提高代码的复用性,消除传统方法的不灵活和不便于后期维护的缺陷是目前现有技术中需要解决的问题。
发明内容
鉴于现有技术的不足,本发明提供的一种基于Java反射技术实现数据校验的方法实现需要四个步骤,分别是:为代码添加注解;为注解添加校验算法;获取反射内容;根据反射的注解选用校验算法,根据反射的内容对代码进行校验;
1)为代码添加注解
由注解定义器为需要校验的Java代码数据对应的实体类上增加自定义注解和注解属性,提高代码的可读性以及简洁性;注解属性包括:字段长度,字段最大值,字段空置,字段填充;字段空置和字段填充只能选取一项作为注解属性,字段空置的意思是注解对应的实体类可以没有数据,字段填充的意思是注解对应的实体类必须有数据;
2)为注解添加校验算法
由校验算法定义器为不同的注解添加校验算法,注解成为区别校验算法的标识;
3)获取反射内容
由反射内容获取器接收Java代码的反射信息并记录,Java代码的反射信息包括:反射的注解和反射的注解对应的反射内容;
4)根据反射的注解选用校验算法,根据反射的内容对代码进行校验
由校验器读取反射的注解,并根据反射的注解确定校验需要执行的校验算法,根据反射的注解对应的反射内容用确定的校验算法进行代码校验。
有益效果
本发明的方法预设各种个性化校验规则以满足不同的业务场景,且校验规则只需在校验数据对应的实体类上增加自定义注解属性,提高代码的可读性以及简洁性;同时通过反射机制方便的校验各类数据,调用同一校验方法,可降低业务代码和校验功能代码的耦合度,使得代码更加简洁,也避免了在复制黏贴代码中可能产生的错误。
附图说明
图1是本发明的步骤流程图。
具体实施方式
实施例一
参看图1,本发明提供的一种基于Java反射技术实现数据校验的方法实现需要四个步骤,分别是:步骤S01为代码添加注解;步骤S02为注解添加校验算法;步骤S03获取反射内容;步骤S04根据反射的注解选用校验算法,根据反射的内容对代码进行校验;
步骤S01为代码添加注解
由注解定义器为需要校验的Java代码数据对应的实体类上增加自定义注解和注解属性,提高代码的可读性以及简洁性;注解属性包括:字段长度,字段最大值,字段空置,字段填充;字段空置和字段填充只能选取一项作为注解属性,字段空置的意思是注解对应的实体类可以没有数据,字段填充的意思是注解对应的实体类必须有数据;
步骤S02为注解添加校验算法
由校验算法定义器为不同的注解添加校验算法,注解成为区别校验算法的标识;
步骤S03获取反射内容
由反射内容获取器接收Java代码的反射信息并记录,Java代码的反射信息包括:反射的注解和反射的注解对应的反射内容;
步骤S04根据反射的注解选用校验算法,根据反射的内容对代码进行校验
由校验器读取反射的注解,并根据反射的注解确定校验需要执行的校验算法,根据反射的注解对应的反射内容用确定的校验算法进行代码校验。
实施例二
步骤S01为代码添加注解
为一段获取用户信息的Java代码添加注解,用户信息分为三个实体类,分别为用户编号,用户身份证ID,用户名称;由注解定义器分别为用户信息的三个实体类增加自定义注解分别为用户编号,用户身份证ID,用户名称;由注解定义器为用户编号添加注解属性为:字段长度,字段最大值,字段填充;由注解定义器为用户身份证ID添加注解属性为:字段长度,字段填充;由注解定义器为用户名称添加注解属性为:字段长度,字段填充;
步骤S02为注解添加校验算法
由校验算法定义器为用户编号添加字段长度校验算法,字段最大值校验算法,字段填充判别算法;由校验算法定义器为用户身份证ID添加字段长度校验算法,字段填充判别算法;由校验算法定义器为用户名称添加字段长度校验算法,字段填充判别算法;
步骤S03获取反射内容
由反射内容获取器接收Java代码的反射信息并记录;反射内容获取器接收到注解为用户编号和用户编号的具体内容;反射内容获取器接收到注解为用户身份证ID和用户身份证ID的具体内容;反射内容获取器接收到注解为用户名称和用户名称的具体内容;
步骤S04根据反射的注解选用校验算法,根据反射的内容对代码进行校验
由校验器读取注解为用户编号和用户编号的具体内容,使用字段长度校验算法,字段最大值校验算法和字段填充判别算法对用户编号的具体内容进行校验;由校验器读取注解为用户身份证ID和用户身份证ID的具体内容,使用字段长度校验算法和字段填充判别算法对用户身份证ID的具体内容进行校验;由校验器读取注解为用户名称和用户名称的具体内容,使用字段长度校验算法和字段填充判别算法对用户名称的具体内容进行校验。
Claims (1)
1.一种基于Java反射技术实现数据校验的方法,其特征在于实现需要四个步骤,分别是:为代码添加注解;为注解添加校验算法;获取反射内容;根据反射的注解选用校验算法,根据反射的内容对代码进行校验;
1)为代码添加注解
由注解定义器为需要校验的Java代码数据对应的实体类上增加自定义注解和注解属性,提高代码的可读性以及简洁性;注解属性包括:字段长度,字段最大值,字段空置,字段填充;字段空置和字段填充只能选取一项作为注解属性,字段空置的意思是注解对应的实体类可以没有数据,字段填充的意思是注解对应的实体类必须有数据;
2)为注解添加校验算法
由校验算法定义器为不同的注解添加校验算法,注解成为区别校验算法的标识;
3)获取反射内容
由反射内容获取器接收Java代码的反射信息并记录,Java代码的反射信息包括:反射的注解和反射的注解对应的反射内容;
4)根据反射的注解选用校验算法,根据反射的内容对代码进行校验
由校验器读取反射的注解,并根据反射的注解确定校验需要执行的校验算法,根据反射的注解对应的反射内容用确定的校验算法进行代码校验。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111178089.7A CN113805863A (zh) | 2021-10-09 | 2021-10-09 | 一种基于Java反射技术实现数据校验的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111178089.7A CN113805863A (zh) | 2021-10-09 | 2021-10-09 | 一种基于Java反射技术实现数据校验的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113805863A true CN113805863A (zh) | 2021-12-17 |
Family
ID=78897507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111178089.7A Pending CN113805863A (zh) | 2021-10-09 | 2021-10-09 | 一种基于Java反射技术实现数据校验的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113805863A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795426A (zh) * | 2023-08-21 | 2023-09-22 | 智慧眼科技股份有限公司 | 一种数据处理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145437A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 一种java注解测试方法及装置 |
CN108415834A (zh) * | 2018-02-12 | 2018-08-17 | 平安科技(深圳)有限公司 | 注解后端校验方法、装置、计算机设备及存储介质 |
CN110673838A (zh) * | 2019-09-10 | 2020-01-10 | 四川新网银行股份有限公司 | 输入校验的方法 |
CN111475331A (zh) * | 2020-03-24 | 2020-07-31 | 平安银行股份有限公司 | 数据校验方法、装置、计算机设备和存储介质 |
-
2021
- 2021-10-09 CN CN202111178089.7A patent/CN113805863A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145437A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 一种java注解测试方法及装置 |
CN108415834A (zh) * | 2018-02-12 | 2018-08-17 | 平安科技(深圳)有限公司 | 注解后端校验方法、装置、计算机设备及存储介质 |
CN110673838A (zh) * | 2019-09-10 | 2020-01-10 | 四川新网银行股份有限公司 | 输入校验的方法 |
CN111475331A (zh) * | 2020-03-24 | 2020-07-31 | 平安银行股份有限公司 | 数据校验方法、装置、计算机设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795426A (zh) * | 2023-08-21 | 2023-09-22 | 智慧眼科技股份有限公司 | 一种数据处理方法及系统 |
CN116795426B (zh) * | 2023-08-21 | 2023-11-10 | 智慧眼科技股份有限公司 | 一种数据处理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160381075A1 (en) | Methods and apparatus for generating and using security assertions associated with containers in a computing environment | |
US8745580B2 (en) | Transparent type matching in a programming environment | |
CN112187558B (zh) | 数据校验方法、装置、电子设备 | |
US9672018B2 (en) | Method for validating equivalent data structures | |
CN105068910B (zh) | 一种智能卡的测试方法和装置 | |
CN113805863A (zh) | 一种基于Java反射技术实现数据校验的方法 | |
US6763360B2 (en) | Automated language and interface independent software testing tool | |
US8001424B2 (en) | System and method for fault mapping of exceptions across programming models | |
CN109218393A (zh) | 一种推送的实现方法、装置、设备和计算机存储介质 | |
US20180060207A1 (en) | On-demand automated locale seed generation and verification | |
US10902151B2 (en) | Cognitive API policy manager | |
CN114979264A (zh) | 金融级消息报文处理方法及装置 | |
CN114168149A (zh) | 一种数据转换方法及装置 | |
US11544218B2 (en) | JSON to BPMN conversion system | |
US8776098B2 (en) | Exchanging data using data transformation | |
US10705810B2 (en) | Automatic code generation | |
CN114338850B (zh) | 报文核对方法、装置、终端设备及计算机可读存储介质 | |
CN112528577A (zh) | 时钟复位电路的管理方法、装置和计算机存储介质 | |
KR102480375B1 (ko) | 문서들 간에 연동 적합성을 검증하는 시스템 및 방법 | |
CN115170312A (zh) | 区块链上资产状态信息变更方法及装置 | |
CN111273970B (zh) | 智能合约的调用方法、装置、系统、介质及电子设备 | |
CN113254837A (zh) | 应用程序评估方法、装置、系统、设备和介质 | |
US11940870B2 (en) | Method and device for automatically detecting potential failures in mobile applications | |
CN109597888A (zh) | 建立文本领域识别模型的方法、装置 | |
CN114564413B (zh) | 一种同步设备测试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |