CN105893031B - 一种缓存操作实现方法、业务层方法的调用方法及装置 - Google Patents
一种缓存操作实现方法、业务层方法的调用方法及装置 Download PDFInfo
- Publication number
- CN105893031B CN105893031B CN201610188548.2A CN201610188548A CN105893031B CN 105893031 B CN105893031 B CN 105893031B CN 201610188548 A CN201610188548 A CN 201610188548A CN 105893031 B CN105893031 B CN 105893031B
- Authority
- CN
- China
- Prior art keywords
- cache
- semantic
- service layer
- calling
- rule
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 206
- 238000011161 development Methods 0.000 abstract description 19
- 238000012423 maintenance Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 3
- 230000001737 promoting effect Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000004984 smart glass Substances 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- 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
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例公开了一种缓存操作实现方法,包括:设定至少一条语义规则,每条语义规则对应一类缓存操作;生成与所述语义规则相对应的针对参数进行缓存操作的实现代码;将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使所述业务层方法被调用时,执行与所述业务层方法绑定的语义规则所对应的缓存操作的实现代码。本发明还公开了业务层方法的调用方法及相关装置,采用本发明,实现基于redis缓存操作可配置化管理,利用缓存操作的可配置化,相关代码实现自动化,提高了代码功能内聚性,进一步提高了代码可读性和可重用性,可以大幅度减少开发人员编码量,提升项目开发效率,降低项目维护成本。
Description
技术领域
本发明涉及通信领域,尤其涉及一种缓存操作实现方法、业务层方法的调用方法、及一种缓存操作实现装置、业务层方法的调用装置。
背景技术
随着互联网技术快速发展,网站类用户成几何数级增长,系统负载压力暴增。缓存作为一种大幅度提高系统处理能力的手段被人们广泛使用,缓存应用在高并发系统运行中扮演着重要角色。
近来,考虑到Redis缓存优异性能和多种灵活的元数据存储方式等特点,其受到互联网公司大力推崇。然而,Redis缓存在提供丰富灵活的命令接口同时,也带来了JAVASERVICE层缓存操作代码的散乱,重复冗余等问题,尤其在一些操作如基于缓存的分页查询,增,删,改等操作上。Redis繁多的命令操作接口加大了开发人员项目开发复杂度和维护成本。
发明内容
本发明实施例所要解决的技术问题在于,提供一种缓存操作实现方法、业务层方法的调用方法、及一种缓存操作实现装置、业务层方法的调用装置,有效提高开发人员项目开发效率,降低维护成本。
第一方面,本发明实施例提供了一种缓存操作实现方法,包括:
设定至少一条语义规则,每条语义规则对应一类缓存操作;
生成与所述语义规则相对应的针对参数进行缓存操作的实现代码;
将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使所述业务层方法被调用时,执行与所述业务层方法绑定的语义规则所对应的缓存操作的实现代码。
结合第一方面,在第一种可能的实现方式中,所述语义规则包括以下属性:
指示被绑定的业务层类及其业务方法;
指示被缓存对象的数据类型;
指示缓存数据存取的key值。
结合第一方面,在第二种可能的实现方式中,所述将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定包括:
通过所述配置文件将语义规则绑定到业务层类的目标方法,所述语义规则为所述目标方法被调用时所需的缓存操作对应的语义规则。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述通过所述配置文件将语义规则绑定到业务层类的目标方法,包括:
通过代码生成包cglib将所述进行缓存操作的实现代码关联到相关的业务层类的目标方法。
第二方面,本发明实施例提供了一种业务层方法的调用方法,包括:
接收业务层方法的调用指令;所述调用指令指示进行所述业务层方法调用的缓存操作;
判断被调用的所述业务层方法是否进行了语义规则绑定;所述语义规则对应有针对参数进行所述业务层方法调用的缓存操作的实现代码;
当判断结果为是时,执行所述语义规则对应的所述缓存操作的实现代码,并返回所述缓存操作执行后的数据。
结合第二方面,在第一种可能的实现方式中,所述判断被调用的所述业务层方法是否进行了语义规则绑定之后,还包括:
当判断结果为否时,执行所述业务层方法代码,并返回所述业务层代码执行后的数据。
第三方面,本发明实施例提供了一种缓存操作实现装置,包括:
规则设定模块,用于设定至少一条语义规则,每条语义规则对应一类缓存操作;
代码生成模块,用于生成与所述语义规则相对应的针对参数进行缓存操作的实现代码;
绑定模块,用于将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使所述业务层方法被调用时,执行与所述业务层方法绑定的语义规则所对应的缓存操作的实现代码。
结合第三方面,在第一种可能的实现方式中,所述语义规则包括以下属性:
指示被绑定的业务层类及其业务方法;
指示被缓存对象的数据类型;
指示缓存数据存取的key值。
结合第三方面,在第二种可能的实现方式中,所述绑定模块具体用于通过所述配置文件将语义规则绑定到业务层类的目标方法,所述语义规则为所述目标方法被调用时所需的缓存操作对应的语义规则。
结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述绑定模块具体用于,通过代码生成包cglib将所述进行缓存操作的实现代码关联到相关的业务层类的目标方法。
第四方面,本发明实施例提供了一种业务层方法的调用装置,包括:
调用指令接收模块,用于接收业务层方法的调用指令;所述调用指令指示进行所述业务层方法调用的缓存操作;
绑定判断模块,用于判断被调用的所述业务层方法是否进行了语义规则绑定;所述语义规则对应有针对参数进行所述业务层方法调用的缓存操作的实现代码;
第一执行模块,用于当判断结果为是时,执行所述语义规则对应的所述缓存操作的实现代码,并返回所述缓存操作执行后的数据。
结合第四方面,在第一种可能的实现方式中,还包括:
第二执行模块,用于当判断结果为否时,执行所述业务层方法代码,并返回所述业务层代码执行后的数据。
第五方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时包括本发明实施例第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式中公开的缓存操作实现方法,或者第二方面,或者第二方面的第一种可能的实现方式中公开的业务层方法的调用方法。
通过实施本发明实施例,设定至少一条语义规则,每条语义规则对应一类缓存操作;生成与该语义规则相对应的针对参数进行缓存操作的实现代码;将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使该业务层方法被调用时,自动执行与该业务层方法绑定的语义规则所对应的缓存操作的实现代码,可以实现基于redis缓存操作可配置化管理,利用缓存操作的可配置化,相关代码实现自动化,通过将缓存操作代码与系统的业务层代码相分离,缓存代码与业务层代码进行了解耦,提高了代码功能内聚性,进一步提高了代码可读性和可重用性,可以大幅度减少开发人员编码量,提升项目开发效率,降低项目维护成本,降低开发过程错误出现率,提高系统稳健性,而且符合软件工程开发设计思想,有助于推动软件技术发展。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的缓存操作实现方法的流程示意图;
图2是本发明实施例提供的针对参数进行缓存操作的实现代码的示意图;
图3是本发明实施例提供的数据列表查询缓存代码的实现原理示意图;
图4是本发明提供的项目开发过程的比较示意图;
图5是本发明实施例提供的业务层方法的调用方法例的流程示意图;
图6是本发明实施例提供的缓存操作实现装置的结构示意图;
图7是本发明提供的缓存操作实现装置的另一实施例的结构示意图;
图8是本发明实施例提供的业务层方法的调用装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
下面结合图1示出的本发明实施例提供的缓存操作实现方法的流程示意图,包括:
步骤S100:设定至少一条语义规则,每条语义规则对应一类缓存操作;
具体地,开发人员可以设定或定义一套语义规则来描述缓存操作,该一套语义规则包含至少一条语义规则,其中每条语义规则对应某一类缓存操作。本发明实施例中的语义规则可以包括以下属性:指示被绑定的业务层类及其业务方法、指示被缓存对象的数据类型、和指示缓存数据存取的key值。
具体地,可以通过可扩展标记语言XML来定义相关缓存操作的语义规则,如下:
<rules>
<rule id="queryFreshMemberlist"class="com.xx.ent.dream.service.freshme mber.FreshMemberService"method="queryFreshMemberlist"cachekey="dream|freshmember|info|hash|key"/>
<rule id="oddFreshMember"class="com.xx.ent.dream.service.freshmember.FreshMemberService"method="oddFreshMember"field="id"cachekey="dre am|freshmember|info|hash|key"/>
<rule id="updateFreshMember"class="com.xx.ent.dream.service.freshmem ber.FreshMemberService"method="updateFreshMember"cachekey="dream|freshmember|info|hash|key"/>
<rule id="deleteFreshMember"class="com.xx.ent.dream.service.freshmem ber.FreshMemberService"method="deleteFreshMember"cachekey="dream|freshmember|info|hash|key"/>
<rule id="queryCommentlist"class="com.xx.ent.dream.service.Comment.C ommentService"method="queryCommentlist"entity="com.xx.ent.service.comment.api.model.Comment"cachekey="dream|freshmember|info|hash|key"/>
需要说明的是,rule表示一种语义规则(即缓存规则)绑定方式。属性id表示业务缓存规则的唯一标识,这里需要对缓存规则和业务缓存规则进行区别,缓存规则即本发明实施例中的语义规则,它抽取可重用的缓存代码(即下面步骤S102中对应的针对参数进行缓存操作的实现代码)作为一项缓存规则被不同业务缓存规则重用。
例如,第一条语义规则为列表数据查询缓存规则,被绑定的方法名以query开头及list结尾,这样的方法返回的数据类型一般为列表list;第二条语义规则为数据更新缓存规则,被绑定的方法名以update开头,数据为单条;第三条语义规则为数据删除缓存规则:被绑定的方法名以delete开头,数据为单条。等等
每条语义规则中属性class和method分别表示被绑定的业务层类及其的业务方法,属性entity表示被缓存对象的基本类型(即数据类型),默认为com.yy.ent.commons.base.dto.Property类型。属性cachekey表示缓存数据存取的key值。属性field表示hash缓存方式的field,它与cachekey区别在于,存取缓存需先定位到cachekey,再定位到field,最后才存取某一条数据内容。例如,第一条语义规则id为queryFreshMemberList表示,业务层类FreshMemberService的方法queryFreshMemberList绑定到第一条规则,缓存的数据类型为com.yy.ent.commons.base.dto.Propert(默认类型)。
步骤S102:生成与所述语义规则相对应的针对参数进行缓存操作的实现代码;
具体地,开发人员还需要定义一套与语义规则相对应的针对参数进行缓存操作的实现代码,例如开发人员可以定义一套与语义规则相对应的JAVA方法,方法体中含有针对参数进行缓存操作的实现代码。该实现代码为具有通用性的缓存操作代码,即为可重用的缓存代码。
以上面步骤S100中举例的第一条语义规则为例,如图2示出的本发明实施例提供的针对参数进行缓存操作的实现代码的示意图,展示的是数据列表查询缓存代码,包括从缓存中读取数据以及将数据放入缓存的缓存操作。
步骤S104:将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使所述业务层方法被调用时,执行与所述业务层方法绑定的语义规则所对应的缓存操作的实现代码。
具体地,可以通过所述配置文件将语义规则绑定到业务层类的目标方法,如图2所示,生成的即为配置文件;也就是说,本发明实施例通过抽取具有通用性的缓存操作代码单独放到可配置化系统中,并与语义规则(即缓存规则)对应,当开发人员通过规则文件绑定业务层方法到具体规则时,规则对应可重用的缓存操作的实现代码被自动添加到业务层方法中。可以说,缓存代码自动生成过程对用户是完全透明的。
进一步地,如图2所示,可以通过代码生成包cglib将该进行缓存操作的实现代码关联到相关的业务层类的目标方法,以使所述业务层方法被调用时,执行与所述业务层方法绑定的语义规则所对应的缓存操作的实现代码。具体执行过程可以参考图3示出的本发明实施例提供的数据列表查询缓存代码的实现原理示意图:
步骤S300:绑定了语义规则的业务层方法被调用;
步骤S302:调用beforeQueryCacheMethod后返回缓存中的数据;
步骤S304:判断返回的数据是否为空;
当判断为空时,执行步骤S306,否则,执行步骤S312;
步骤S306:正式调用业务层方法,并返回数据;
步骤S308:判断返回的数据是否为空;
当判断不为空时,执行步骤S310,否则,执行步骤S312;
步骤S310:调用afterQueryCacheMethod,将数据放入缓存中,并返回数据;
步骤S312:返回到应用层。
图3展示了抽取的可重用的缓存操作的实现代码与业务层方法协同执行的过程。其他语义规则如第二条、第三条等等对应的缓存代码的实现执行过程与图3展示流程基本一致,这里不再赘述。
再进一步地,如图4示出的本发明提供的项目开发过程的比较示意图,比较Redis缓存可配置前后的项目开发过程:
现有技术中,在查询数据列表方法中引入缓存操作后,首先需从缓存读取数据,如果存在,则直接返回,否则从数据库读取后(第88行)再放入缓存(第90行),然后再返回。引入Redis缓存可配置后,代码编写方式大大简便了,其将有关缓存操作的代码完全摈弃掉了,代码量的减少是显著的。
上述详细阐述了本发明实施例的缓存操作实现方法,相应地,本发明还提供了一种业务层方法的调用方法,如图5所示,包括:
步骤S500:接收业务层方法的调用指令;所述调用指令指示进行所述业务层方法调用的缓存操作;
步骤S502:判断被调用的所述业务层方法是否进行了语义规则绑定;所述语义规则对应有针对参数进行所述业务层方法调用的缓存操作的实现代码;
当判断结果为是时,执行步骤S504,否则,执行步骤S506。
步骤S504:执行所述语义规则对应的所述缓存操作的实现代码,并返回所述缓存操作执行后的数据。
具体地,可以参考上述图3举例的缓存操作的实现代码的执行流程。
步骤S506:执行所述业务层方法代码,并返回所述业务层代码执行后的数据。
通过实施本发明实施例,设定至少一条语义规则,每条语义规则对应一类缓存操作;生成与该语义规则相对应的针对参数进行缓存操作的实现代码;将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使该业务层方法被调用时,自动执行与该业务层方法绑定的语义规则所对应的缓存操作的实现代码,可以实现基于redis缓存操作可配置化管理,利用缓存操作的可配置化,相关代码实现自动化,通过将缓存操作代码与系统的业务层代码相分离,缓存代码与业务层代码进行了解耦,提高了代码功能内聚性,进一步提高了代码可读性和可重用性,可以大幅度减少开发人员编码量,提升项目开发效率,降低项目维护成本,降低开发过程错误出现率,提高系统稳健性,而且符合软件工程开发设计思想,有助于推动软件技术发展。
上述详细阐述了本发明实施例的方法,下面为了便于更好地实施本发明实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关装置。
如图6示出的本发明实施例提供的缓存操作实现装置的结构示意图,缓存操作实现装置60可以包括规则设定模块600、代码生成模块602和绑定模块604,其中,
规则设定模块600用于设定至少一条语义规则,每条语义规则对应一类缓存操作;
代码生成模块602用于生成与所述语义规则相对应的针对参数进行缓存操作的实现代码;
绑定模块604用于将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使所述业务层方法被调用时,执行与所述业务层方法绑定的语义规则所对应的缓存操作的实现代码。
具体地,语义规则可以包括以下属性:
指示被绑定的业务层类及其业务方法;
指示被缓存对象的数据类型;
指示缓存数据存取的key值。
进一步地,绑定模块604具体用于通过所述配置文件将语义规则绑定到业务层类的目标方法,所述语义规则为所述目标方法被调用时所需的缓存操作对应的语义规则。其中,通过所述配置文件将语义规则绑定到业务层类的目标方法具体可以为通过代码生成包cglib将所述进行缓存操作的实现代码关联到相关的业务层类的目标方法。
可理解的是,本实施例的缓存操作实现装置60的各功能模块的功能可根据上述方法实施例中的方法具体实现,此处不再赘述。
请参阅图7,图7是本发明提供的缓存操作实现装置的另一实施例的结构示意图。其中,如图7所示,缓存操作实现装置70可以包括:至少一个处理器701,例如CPU,至少一个网络接口704,用户接口703,存储器705,至少一个通信总线702,可选地,还可以包括显示屏706。其中,通信总线702用于实现这些组件之间的连接通信。其中,用户接口703可以包括触摸屏、键盘或鼠标等等。网络接口704可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通过网络接口704可以与客户端建立通信连接。存储器705可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器705包括本发明实施例中的flash。存储器705可选的还可以是至少一个位于远离前述处理器701的存储系统。如图7所示,作为一种计算机存储介质的存储器705中可以包括操作系统、网络通信模块、用户接口模块以及缓存操作实现程序。
处理器701可以用于调用存储器705中存储的缓存操作实现程序,并执行以下操作:
设定至少一条语义规则,每条语义规则对应一类缓存操作;
生成与所述语义规则相对应的针对参数进行缓存操作的实现代码;
将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使所述业务层方法被调用时,执行与所述业务层方法绑定的语义规则所对应的缓存操作的实现代码。
具体地,处理器701将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,具体包括:
根据所述缓存操作的实现代码生成配置文件;
通过所述配置文件将语义规则绑定到业务层类的目标方法,所述语义规则为所述目标方法被调用时所需的缓存操作对应的语义规则。
具体地,处理器701通过所述配置文件将语义规则绑定到业务层类的目标方法,包括:
通过代码生成包cglib将所述进行缓存操作的实现代码关联到相关的业务层类的目标方法。
需要说明的是,本发明实施例中的缓存操作实现装置60或缓存操作实现装置70包括但不限于个人计算机、移动电脑、平板电脑、移动电话、个人数字助理(Personal DigitalAssistant,PDA)、智能电视、智能手表、智能眼镜、智能手环等用户设备上。
相应地,本发明还提供了一种业务层方法的调用装置,如图8示出的本发明实施例提供的业务层方法的调用装置的结构示意图,业务层方法的调用装置80可以包括:调用指令接收模块800、绑定判断模块802和第一执行模块804,其中,
调用指令接收模块800用于接收业务层方法的调用指令;所述调用指令指示进行所述业务层方法调用的缓存操作;
绑定判断模块802用于判断被调用的所述业务层方法是否进行了语义规则绑定;所述语义规则对应有针对参数进行所述业务层方法调用的缓存操作的实现代码;
第一执行模块804用于当绑定判断模块802的判断结果为是时,执行所述语义规则对应的所述缓存操作的实现代码,并返回所述缓存操作执行后的数据。
具体地,业务层方法的调用装置80还可以包括第二执行模块806,用于当绑定判断模块802的判断结果为否时,执行所述业务层方法代码,并返回所述业务层代码执行后的数据。
可理解的是,本实施例的业务层方法的调用装置80的各功能模块的功能可根据上述方法实施例中的方法具体实现,此处不再赘述。本发明实施例中的业务层方法的调用装置包括但不限于个人计算机、移动电脑、平板电脑、移动电话、个人数字助理(PersonalDigital Assistant,PDA)、智能电视、智能手表、智能眼镜、智能手环等用户设备上。
综上所述,通过实施本发明实施例,设定至少一条语义规则,每条语义规则对应一类缓存操作;生成与该语义规则相对应的针对参数进行缓存操作的实现代码;将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使该业务层方法被调用时,自动执行与该业务层方法绑定的语义规则所对应的缓存操作的实现代码,可以实现基于redis缓存操作可配置化管理,利用缓存操作的可配置化,相关代码实现自动化,通过将缓存操作代码与系统的业务层代码相分离,缓存代码与业务层代码进行了解耦,提高了代码功能内聚性,进一步提高了代码可读性和可重用性,可以大幅度减少开发人员编码量,提升项目开发效率,降低项目维护成本,降低开发过程错误出现率,提高系统稳健性,而且符合软件工程开发设计思想,有助于推动软件技术发展。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (12)
1.一种缓存操作实现方法,其特征在于,包括:
设定至少一条语义规则,每条语义规则对应一类缓存操作;所述语义规则用于描述缓存操作;
生成与所述语义规则相对应的针对参数进行缓存操作的实现代码;
将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使所述业务层方法被调用时,执行与所述业务层方法绑定的语义规则所对应的缓存操作的实现代码。
2.如权利要求1所述的方法,其特征在于,所述语义规则包括以下属性:
指示被绑定的业务层类及其业务方法;
指示被缓存对象的数据类型;
指示缓存数据存取的key值。
3.如权利要求1所述的方法,其特征在于,所述将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定包括:
通过配置文件将语义规则绑定到业务层类的目标方法,所述语义规则为所述目标方法被调用时所需的缓存操作对应的语义规则。
4.如权利要求3所述的方法,其特征在于,所述通过所述配置文件将语义规则绑定到业务层类的目标方法,包括:
通过代码生成包cglib将所述进行缓存操作的实现代码关联到相关的业务层类的目标方法。
5.一种业务层方法的调用方法,其特征在于,包括:
接收业务层方法的调用指令;所述调用指令指示进行所述业务层方法调用的缓存操作;
判断被调用的所述业务层方法是否进行了语义规则绑定;所述语义规则对应有针对参数进行所述业务层方法调用的缓存操作的实现代码;所述语义规则用于描述缓存操作;
当判断结果为是时,执行所述语义规则对应的所述缓存操作的实现代码,并返回所述缓存操作执行后的数据。
6.如权利要求5所述的方法,其特征在于,所述判断被调用的所述业务层方法是否进行了语义规则绑定之后,还包括:
当判断结果为否时,执行所述业务层方法代码,并返回所述业务层代码执行后的数据。
7.一种缓存操作实现装置,其特征在于,包括:
规则设定模块,用于设定至少一条语义规则,每条语义规则对应一类缓存操作;所述语义规则用于描述缓存操作;
代码生成模块,用于生成与所述语义规则相对应的针对参数进行缓存操作的实现代码;
绑定模块,用于将业务层方法调用所需的缓存操作对应的语义规则与所述业务层方法进行绑定,以使所述业务层方法被调用时,执行与所述业务层方法绑定的语义规则所对应的缓存操作的实现代码。
8.如权利要求7所述的装置,其特征在于,所述语义规则包括以下属性:
指示被绑定的业务层类及其业务方法;
指示被缓存对象的数据类型;
指示缓存数据存取的key值。
9.如权利要求7所述的装置,其特征在于,所述绑定模块具体用于,通过配置文件将语义规则绑定到业务层类的目标方法,所述语义规则为所述目标方法被调用时所需的缓存操作对应的语义规则。
10.如权利要求9所述的装置,其特征在于,所述绑定模块具体用于,通过代码生成包cglib将所述进行缓存操作的实现代码关联到相关的业务层类的目标方法。
11.一种业务层方法的调用装置,其特征在于,包括:
调用指令接收模块,用于接收业务层方法的调用指令;所述调用指令指示进行所述业务层方法调用的缓存操作;
绑定判断模块,用于判断被调用的所述业务层方法是否进行了语义规则绑定;所述语义规则对应有针对参数进行所述业务层方法调用的缓存操作的实现代码;所述语义规则用于描述缓存操作;
第一执行模块,用于当判断结果为是时,执行所述语义规则对应的所述缓存操作的实现代码,并返回所述缓存操作执行后的数据。
12.如权利要求11所述的装置,其特征在于,还包括:
第二执行模块,用于当判断结果为否时,执行所述业务层方法代码,并返回所述业务层代码执行后的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610188548.2A CN105893031B (zh) | 2016-03-28 | 2016-03-28 | 一种缓存操作实现方法、业务层方法的调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610188548.2A CN105893031B (zh) | 2016-03-28 | 2016-03-28 | 一种缓存操作实现方法、业务层方法的调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105893031A CN105893031A (zh) | 2016-08-24 |
CN105893031B true CN105893031B (zh) | 2019-12-24 |
Family
ID=57014554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610188548.2A Active CN105893031B (zh) | 2016-03-28 | 2016-03-28 | 一种缓存操作实现方法、业务层方法的调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105893031B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445505A (zh) * | 2016-08-31 | 2017-02-22 | 恒生电子股份有限公司 | 一种代码处理方法及装置 |
CN106844753B (zh) * | 2017-02-16 | 2019-12-20 | 北京天元创新科技有限公司 | 一种构建网元树组件的方法以及装置 |
CN106897927A (zh) * | 2017-02-16 | 2017-06-27 | 中国人民银行清算总中心 | 一种交易系统业务检查方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577276A (zh) * | 2003-07-11 | 2005-02-09 | 国际商业机器公司 | 控制分布式数据的高速缓存操作的方法和系统 |
CN1823322A (zh) * | 2003-07-15 | 2006-08-23 | 可递有限公司 | 用于程序代码转换的共享代码缓存方法及设备 |
CN102945156A (zh) * | 2012-10-23 | 2013-02-27 | 深圳市融创天下科技股份有限公司 | 一种基于Java对象的数据缓存方法和装置 |
CN103136263A (zh) * | 2011-11-23 | 2013-06-05 | 英业达股份有限公司 | 自动生成sql语句的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9250938B2 (en) * | 2008-10-15 | 2016-02-02 | Microsoft Technology Licensing, Llc | Caching runtime generated code |
CN101499095B (zh) * | 2009-03-11 | 2011-04-27 | 南京联创科技集团股份有限公司 | 用于数据共享平台的构建缓冲的方法 |
CN102130959A (zh) * | 2011-03-22 | 2011-07-20 | 浪潮(北京)电子信息产业有限公司 | 一种实现云存储资源调度的系统及方法 |
CN103473696A (zh) * | 2013-09-03 | 2013-12-25 | 周吉 | 一种收集、分析和分发网络商业信息的方法和系统 |
-
2016
- 2016-03-28 CN CN201610188548.2A patent/CN105893031B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577276A (zh) * | 2003-07-11 | 2005-02-09 | 国际商业机器公司 | 控制分布式数据的高速缓存操作的方法和系统 |
CN1823322A (zh) * | 2003-07-15 | 2006-08-23 | 可递有限公司 | 用于程序代码转换的共享代码缓存方法及设备 |
CN103136263A (zh) * | 2011-11-23 | 2013-06-05 | 英业达股份有限公司 | 自动生成sql语句的方法 |
CN102945156A (zh) * | 2012-10-23 | 2013-02-27 | 深圳市融创天下科技股份有限公司 | 一种基于Java对象的数据缓存方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105893031A (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857755B (zh) | 一种规则校验方法及装置 | |
CN108845816B (zh) | 应用程序更新方法、系统、计算机设备及存储介质 | |
US8620995B2 (en) | Method, computer program, transcoding server and computer system for modifying a digital document | |
CN107832099B (zh) | 一种客户端版本兼容的方法、装置及存储介质 | |
US8811968B2 (en) | Systems and methods for executing an application on a mobile device | |
US20180136911A1 (en) | Automation of canonical model usage in application development processes | |
US20140143647A1 (en) | Method for improving browser cache by reducing duplicate stored content | |
CN110888842A (zh) | 一种文件存储方法、文件查询方法、装置及设备 | |
CN105893031B (zh) | 一种缓存操作实现方法、业务层方法的调用方法及装置 | |
CN112817657B (zh) | 一种应用程序启动项加载方法、装置、系统及存储介质 | |
CN105631019A (zh) | 元数据扩展方法和元数据扩展装置 | |
CN108920691A (zh) | 前端静态资源的管理方法、装置、计算机设备及存储介质 | |
WO2023207418A1 (zh) | 一种sdk升级方法、装置以及计算机设备 | |
US9990192B2 (en) | Remotable project | |
CN106156050B (zh) | 一种数据处理方法及装置 | |
CN113296854A (zh) | 一种数据加载方法、系统、电子设备及存储介质 | |
US20090143084A1 (en) | System and method for performing quick short message functions for a mobile phone | |
US20140297736A1 (en) | Data interchange system | |
CN110825373A (zh) | 一种移动端动态化方法及装置 | |
CN114036180A (zh) | 报表生成方法、装置、设备及存储介质 | |
US11144529B2 (en) | Consistent data replication in an event-driven architecture | |
CN112035131A (zh) | 一种处理互联网软件安装应用的方法 | |
CN108733401B (zh) | 一种实现浏览器兼容的方法及装置 | |
CN118245139B (zh) | 探针处理方法、装置、存储介质及电子设备 | |
CN117008890B (zh) | 扩展应用开发系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |