参数注入方法、装置及计算机存储介质与流程

文档序号:30531299发布日期:2022-06-25 10:20阅读:82来源:国知局
参数注入方法、装置及计算机存储介质与流程

1.本发明涉及信息处理技术领域,特别是涉及一种参数注入方法、装置及计算机存储介质。


背景技术:

2.目前,基于aop技术的参数注入方式,需要根据研发人员通过编写业务逻辑代码对共有的应用数据进行封装到容器中,其缺点是在有相同业务场景下出现大量的冗余代码,影响研发效率。


技术实现要素:

3.本发明的目的在于提供一种参数注入方法、装置及计算机存储介质,通过自动化注入公共参数数据,提高了研发效率,降低了代码的冗余度。
4.为达到上述目的,本发明的技术方案是这样实现的:
5.第一方面,本发明实施例提供了一种参数注入方法,包括:
6.获取业务请求;
7.响应于所述业务请求,基于aop从threadlocal中读取所述业务请求所涉及功能模块的公共参数变量;
8.将所述公共参数变量注入所述业务请求对应的业务参数中。
9.作为其中一种实施方式,所述获取业务请求之前,还包括以下步骤:
10.获取用户信息以及用户操作的功能模块的公共参数变量;
11.将所述用户信息和所述公共参数变量存储至所述threadlocal中。
12.作为其中一种实施方式,所述将所述用户信息和所述公共参数变量存储至所述threadlocal中之前,还包括以下步骤:
13.接收到用户登录请求后,对所述用户登录请求进行登录验证;
14.检测到用户登录验证成功后,执行所述将所述用户信息和所述公共参数变量存储至所述threadlocal中的步骤。
15.作为其中一种实施方式,所述获取业务请求之前,还包括以下步骤:
16.创建aop切面信息。
17.第二方面,本发明实施例提供了一种参数注入装置,所述装置包括:
18.获取模块,用于获取业务请求;
19.处理模块,用于响应于所述业务请求,基于aop从threadlocal中读取所述业务请求所涉及功能模块的公共参数变量;
20.注入模块,用于将所述公共参数变量注入所述业务请求对应的业务参数中。
21.作为其中一种实施方式,所述装置还包括存储模块;其中,
22.所述获取模块,还用于获取用户信息以及用户操作的功能模块的公共参数变量;
23.所述存储模块,用于将所述用户信息和所述公共参数变量存储至所述
threadlocal中。
24.作为其中一种实施方式,所述装置还包括验证模块,用于接收到用户登录请求后,对所述用户登录请求进行登录验证;以及检测到用户登录验证成功后,控制所述存储模块将所述用户信息和所述公共参数变量存储至所述threadlocal中。
25.作为其中一种实施方式,所述处理模块,还用于创建aop切面信息。
26.第三方面,本发明实施例提供了一种参数注入装置,包括:处理器和存储有计算机程序的存储器,在所述处理器运行所述计算机程序时,实现上述所述的参数注入方法。
27.第四方面,本发明实施例提供了一种计算机存储介质,存储有计算机程序,所述计算机程序被处理器执行时,实现第一方面所述的参数注入方法。
28.本发明实施例提供的参数注入方法、装置及计算机存储介质,包括:获取业务请求;响应于所述业务请求,基于aop从threadlocal中读取所述业务请求所涉及功能模块的公共参数变量;将所述公共参数变量注入所述业务请求对应的业务参数中。如此,通过利用aop和threadlocal技术自动化注入公共参数数据,提高了研发效率,降低了代码的冗余度。
附图说明
29.图1为本发明实施例提供的一种参数注入方法的流程示意图;
30.图2为本发明实施例提供的一种参数注入装置的结构示意图一;
31.图3为本发明实施例提供的一种参数注入方法的具体流程示意图;
32.图4为本发明实施例提供的一种参数注入方法的拓扑示意图;
33.图5为本发明实施例提供的一种参数注入装置的结构示意图二。
具体实施方式
34.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的设备和方法的例子。
35.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者设备中还存在另外的相同要素,此外,本技术不同实施例中具有同样命名的部件、特征、要素可能具有相同含义,也可能具有不同含义,其具体含义需以其在该具体实施例中的解释或者进一步结合该具体实施例中上下文进行确定。
36.应当理解,尽管在本文可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语"如果"可以被解释成为"在
……
时"或"当
……
时"或"响应于确定"。再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的
特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“a、b或c”或者“a、b和/或c”意味着“以下任一个:a;b;c;a和b;a和c;b和c;a、b和c”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
37.应该理解的是,虽然本技术实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
38.需要说明的是,在本文中,采用了诸如s101、s102等步骤代号,其目的是为了更清楚简要地表述相应内容,不构成顺序上的实质性限制,本领域技术人员在具体实施时,可能会先执行s102后执行s101等,但这些均应在本技术的保护范围之内。
39.应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
40.在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或者“单元”的后缀仅为了有利于本技术的说明,其本身没有特定的意义。因此,“模块”、“部件”或者“单元”可以混合地使用。
41.参阅图1,为本技术实施例提供的一种参数注入方法,该方法可以由本技术实施例提供的一种参数注入装置来执行,该装置可以采用软件和/或硬件的方式来实现,该装置具体可以是电脑等电子设备,本实施例提供的参数注入方法包括以下步骤:
42.步骤s101:获取业务请求。
43.可以理解,所述业务请求可以为用户在应用的操作界面输入的操作而相应生成的请求,比如打开设置功能界面的请求、打开分享功能界面的请求等。
44.可选地,所述获取业务请求之前,所述方法还可包括以下步骤:
45.获取用户信息以及用户操作的功能模块的公共参数变量;
46.将所述用户信息和所述公共参数变量存储至所述threadlocal中。
47.可以理解,在用户登录平台后,可获取用户信息如登录账号等,以及记录用户操作的功能模块的公共参数变量,并将所述用户信息和所述公共参数变量存储至所述threadlocal中,以便于后续获取到该用户触发的业务请求时,可直接从所述threadlocal中读取该业务请求所涉及功能模块的公共参数变量,而使研发人员在研发时无需关注公共参数变量的部分,进一步提高了研发效率。
48.可选地,所述将所述用户信息和所述公共参数变量存储至所述threadlocal中之前,还包括以下步骤:
49.接收到用户登录请求后,对所述用户登录请求进行登录验证;
50.检测到用户登录验证成功后,执行所述将所述用户信息和所述公共参数变量存储至所述threadlocal中的步骤。
51.可以理解,在用户请求登录平台时,可通过输入用户信息以及点击登录按键等操作发出用户登录请求,而接收到用户登录请求后,对所述用户登录请求进行登录验证,比如
根据用户登录请求携带的用户信息检测用户是否为已注册用户等,若检测到用户登录验证成功,如根据用户登录请求携带的用户信息检测到用户为已注册用户等,则可将所述用户信息和所述公共参数变量存储至所述threadlocal中,以便于后续该用户登录平台后,可直接从所述threadlocal中读取该用户触发的业务请求所涉及功能模块的公共参数变量,而使研发人员在研发时无需关注公共参数变量的部分,进一步提高了研发效率。
52.可选地,所述获取业务请求之前,还包括以下步骤:创建aop切面信息。这里,通过创建aop切面信息,以对需要进行切面操作的位置进行处理,从而便于后续基于aop从threadlocal中读取所述业务请求所涉及功能模块的公共参数变量。
53.步骤s102:响应于所述业务请求,基于aop从threadlocal中读取所述业务请求所涉及功能模块的公共参数变量。
54.具体地,在获取到所述业务请求后,基于aop从threadlocal中读取所述业务请求所涉及功能模块的公共参数变量,即基于aop从threadlocal中读取所述业务请求的触发用户相应存储的所述业务请求所涉及功能模块的公共参数变量。
55.步骤s103:将所述公共参数变量注入所述业务请求对应的业务参数中。
56.具体地,将所述公共参数变量注入所述业务请求对应的业务参数中,以直接使用所述公共参数变量对所述业务请求进行处理。
57.综上,上述实施例提供的参数注入方法中,通过利用aop和threadlocal技术自动化注入公共参数数据,提高了研发效率,降低了代码的冗余度。
58.基于前述实施例相同的发明构思,参阅图2,为本技术实施例提供的一种参数注入装置,包括:
59.获取模块10,用于获取业务请求;
60.处理模块11,用于响应于所述业务请求,基于aop从threadlocal中读取所述业务请求所涉及功能模块的公共参数变量;
61.注入模块12,用于将所述公共参数变量注入所述业务请求对应的业务参数中。
62.可以理解,所述业务请求可以为用户在应用的操作界面输入的操作而相应生成的请求,比如打开设置功能界面的请求、打开分享功能界面的请求等。在获取到所述业务请求后,基于aop从threadlocal中读取所述业务请求所涉及功能模块的公共参数变量,即基于aop从threadlocal中读取所述业务请求的触发用户相应存储的所述业务请求所涉及功能模块的公共参数变量。将所述公共参数变量注入所述业务请求对应的业务参数中,以直接使用所述公共参数变量对所述业务请求进行处理。
63.综上,上述实施例提供的参数注入装置中,通过利用aop和threadlocal技术自动化注入公共参数数据,提高了研发效率,降低了代码的冗余度。
64.可选地,所述装置还包括存储模块13;其中,
65.所述获取模块10,还用于获取用户信息以及用户操作的功能模块的公共参数变量;
66.所述存储模块13,用于将所述用户信息和所述公共参数变量存储至所述threadlocal中。
67.可以理解,在用户登录平台后,可获取用户信息如登录账号等,以及记录用户操作的功能模块的公共参数变量,并将所述用户信息和所述公共参数变量存储至所述
threadlocal中,以便于后续获取到该用户触发的业务请求时,可直接从所述threadlocal中读取该业务请求所涉及功能模块的公共参数变量,而使研发人员在研发时无需关注公共参数变量的部分,进一步提高了研发效率。
68.在一实施方式中,所述装置还包括验证模块14,用于接收到用户登录请求后,对所述用户登录请求进行登录验证;以及检测到用户登录验证成功后,控制所述存储模块13将所述用户信息和所述公共参数变量存储至所述threadlocal中。
69.可以理解,在用户请求登录平台时,可通过输入用户信息以及点击登录按键等操作发出用户登录请求,而接收到用户登录请求后,对所述用户登录请求进行登录验证,比如根据用户登录请求携带的用户信息检测用户是否为已注册用户等,若检测到用户登录验证成功,如根据用户登录请求携带的用户信息检测到用户为已注册用户等,则可将所述用户信息和所述公共参数变量存储至所述threadlocal中,以便于后续该用户登录平台后,可直接从所述threadlocal中读取该用户触发的业务请求所涉及功能模块的公共参数变量,而使研发人员在研发时无需关注公共参数变量的部分,进一步提高了研发效率。
70.在一实施方式中,所述处理模块11,还用于创建aop切面信息。这里,通过创建aop切面信息,以对需要进行切面操作的位置进行处理,从而便于后续基于aop从threadlocal中读取所述业务请求所涉及功能模块的公共参数变量。
71.基于前述实施例相同的发明构思,下面通过具体场景对前述实施例进行具体说明。
72.首先,对于面向切面编程(aop,aspect oriented programming)包含的技术特性简单介绍如下:
73.join point(连接点):是程序执行中的一个精确执行点,例如类中的一个方法。它是一个抽象的概念,在实现aop时,并不需要去定义一个join point。
74.point cut(切入点):本质上是一个捕获连接点的结构。在aop中,可以定义一个point cut,来捕获相关方法的调用。
75.advice(通知):是point cut的执行代码,是执行“方法”的具体逻辑。
76.aspect(方面):point cut和advice结合起来就是aspect,它类似于oop定义的一个类,但它代表的更多是对象间横向的关系。
77.introduce(引入):为对象引入附加的方法或属性,从而达到修改对象结构的目的。
78.aop具备如下优点:减少系统的重复代码;降低模块间的耦合度;可操作性和可维护性。
79.本实施例提供的参数注入方法可运行在java环境下,引入相应的jar包依赖。同时本实施例提供的参数注入方法,可用于大部分业务场景,根据不同的场景进行相应的细节修改;适用场景可为约定成俗的公共变量,也可进行参数的动态配置。
80.参阅图3和图4,本实施例提供的参数注入方法包括以下步骤;
81.步骤s201:获取用户请求;
82.这里,可获取用户通过平台触发的请求。
83.步骤s202:判断所述用户是否登录平台,若是,执行步骤s203,否则执行步骤s206;
84.这里,在用户登录平台后,获取相应的用户信息,同时把根据登录请求获取的用户
信息进行存储,用户信息是用户平台登录的标识。
85.步骤s203:取出公共数据存入threadlocal中;
86.这里,用户在登录平台后进入某些模块进行操作,操作的过程携带着用户信息和相应模块的公共信息,而通过在系统拦截层提取用户信息和相应请求的模块参数信息,存入相应线程的threadlocal中。
87.步骤s204:判断是否进入数据处理,若是,则执行步骤s205,否则执行步骤s207;
88.步骤s205:执行aop切面处理;
89.这里,使用aop技术对需要进行切面操作的位置进行处理,并在aop处理中根据threadlocal特性取出当前存储的公共变量直接注入到切点中,而切点业务直接使用自动化注入的数据进行数据处理,即业务模块使用应用数据执行相应处理操作。
90.步骤s206:未授权拦截请求
91.步骤s207:返回结果。
92.本实施例中,可通过代码iotauth.getauth().setsessioninfo(sessioninfo)实现通过拦截器获取用户信息,用户信息不存在则返回未授权;通过代码private threadlocal《map《string,object》》tl=newthreadlocal《map《string,object》》()以及public void setsessioninfo(map《string,object》si){tl.set(si);}把用户信息设置进threadlocal中;通过代码@before("execution(*com.**..*.mapper..*.*(..))||execution(*com.**..*.controller..*.*(..))")创建aop切面信息;通过代码map《string,object》sessioninfo=tl.get()从threadlocal中获取变量信息;通过代码if(objs[0]instanceof map){map param=(map)objs[0];param.put("key",value);}直接把公共参数变量注入到业务参数中直接获取。
[0093]
综上,本实施例提供的参数注入方法中,使用aop技术融合threadlocal特性的方式,使得研发人员无需关注公共变量的部分,只需要专注与业务方面;在系统封装和简洁度上有很大的提高,在效率上节约了大量时间成本,由于重复性的减少,在公共部分出错的概率也得到相应降低,极大降低了研发人员编码出错率。同时,使得系统开发更稳定,更高效。并且,利用aop、threadlocal技术融合能够解决相同应用数据在一个地方注入,降低了代码当前技术出现的冗余问题。
[0094]
基于前述实施例相同的发明构思,本发明实施例提供了一种参数注入装置,如图5所示,该装置包括:处理器310和存储有计算机程序的存储器311;其中,图5中示意的处理器310并非用于指代处理器310的个数为一个,而是仅用于指代处理器310相对其他器件的位置关系,在实际应用中,处理器310的个数可以为一个或多个;同样,图5中示意的存储器311也是同样的含义,即仅用于指代存储器311相对其他器件的位置关系,在实际应用中,存储器311的个数可以为一个或多个。在所述处理器310运行所述计算机程序时,实现应用于上述装置的所述参数注入方法。
[0095]
该装置还可包括:至少一个网络接口312。该装置中的各个组件通过总线系统313耦合在一起。可理解,总线系统313用于实现这些组件之间的连接通信。总线系统313除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统313。
[0096]
其中,存储器311可以是易失性存储器或非易失性存储器,也可包括易失性和非易
失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read-only memory)、可擦除可编程只读存储器(eprom,erasable programmable read-only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read-only memory)、磁性随机存取存储器(fram,ferromagnetic random access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd-rom,compact disc read-only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random access memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronous dynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本发明实施例描述的存储器311旨在包括但不限于这些和任意其它适合类型的存储器。
[0097]
本发明实施例中的存储器311用于存储各种类型的数据以支持该装置的操作。这些数据的示例包括:用于在该装置上操作的任何计算机程序,如操作系统和应用程序;联系人数据;电话簿数据;消息;图片;视频等。其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序可以包含各种应用程序,例如媒体播放器(media player)、浏览器(browser)等,用于实现各种应用业务。这里,实现本发明实施例方法的程序可以包含在应用程序中。
[0098]
基于前述实施例相同的发明构思,本实施例还提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,计算机存储介质可以是磁性随机存取存储器(fram,ferromagnetic random access memory)、只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read-only memory)、可擦除可编程只读存储器(eprom,erasable programmable read-only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read-only memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd-rom,compact disc read-only memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备,如移动电话、计算机、平板设备、个人数字助理等。所述计算机存储介质中存储的计算机程序被处理器运行时,实现应用于上述装置的所述参数注入方法。所述计算机程序被处理器执行时实现的具体步骤流程请参考图1所示实施例的描述,在此不再赘述。
[0099]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0100]
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,除了包含所列的那些要素,而且还可包含没有明确列出的其他要素。
[0101]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1