一种路由代理方法、装置、设备及存储介质制造方法及图纸

技术编号:39440828 阅读:12 留言:0更新日期:2023-11-19 16:23
本申请公开了一种路由代理方法、装置、设备及存储介质,应用于软件开发领域,该方法包括:选择符合第一预设条件的SPI和符合第二预设条件的SPI实现;为SPI创建SPI代理;将SPI实现和SPI建立联合关系,并添加到默认容器中;利用SPI代理从默认容器中查找当前SPI对应的SPI实现集合,并根据路由条件从SPI实现集合中确定当前SPI对应的目标SPI实现,当前SPI符合第一预设条件。本申请在针对同一个SPI有多个SPI实现的路由问题时,将所有接口的路由问题看作是一个共性的问题,提供了统一的解决方案,不需要针对每个接口都写一个套独立的代码去解决路由问题,简化了代码;并且,本方法还具有轻量化的优势。量化的优势。量化的优势。

【技术实现步骤摘要】
一种路由代理方法、装置、设备及存储介质


[0001]本申请涉及软件开发领域,特别涉及一种路由代理方法、装置、设备及存储介质。

技术介绍

[0002]路由是一种通信行为,就是信号从A到B,可以有很多条线路通信,怎样选择一条最快的线路就是路由。在软件开发领域,当开发者定义了一个接口,这个接口会有多个实现路径,开发者会为了该接口要实现的功能编写相应的代码,选择该接口要运行的一个实现路径。那么当开发者定义了多个接口,且每个接口对应不同的功能时,那么开发者就会对每个接口编写相应的代码,每套代码都会根据各自接口不同的功能去选择要执行的实现路径。这样当接口与接口之间实现功能类似的,还分别编写两套类似的代码,使得代码臃肿,并且编写多套代码无疑增加了工作量。

技术实现思路

[0003]有鉴于此,本申请的目的在于提供一种路由代理方法、装置、设备及存储介质,解决了现有技术中代码臃肿,编写多套代码增加工作量的问题。
[0004]为解决上述技术问题,本申请提供了一种路由代理方法,包括:
[0005]选择符合第一预设条件的SPI和符合第二预设条件的SPI实现;
[0006]为所述SPI创建SPI代理;
[0007]将所述SPI实现和所述SPI建立联合关系,并添加到默认容器中;
[0008]利用所述SPI代理从所述默认容器中查找当前SPI对应的SPI实现集合,并根据路由条件从所述SPI实现集合中确定所述当前SPI对应的目标SPI实现;所述当前SPI符合所述第一预设条件。
[0009]可选的,所述选择符合第一预设条件的SPI和符合第二预设条件的SPI实现,包括:
[0010]获取基于SpringBoot开发的应用,并确定所述应用启动方法所在的类;
[0011]判断所述应用启动方法所在的类是否打上了启动注解;
[0012]若打上了所述启动注解,则选择所述应用中打上了SPI定义注解的SPI;
[0013]选择打上了SPI实现注解的SPI实现。
[0014]可选的,所述为所述SPI创建SPI代理,包括:
[0015]为所述SPI创建Spring的bean,作为所述SPI代理;
[0016]利用所述Spring将所述SPI代理注入到标记了@Resource的成员变量所在的类中。
[0017]可选的,所述利用所述SPI代理从所述默认容器中查找当前SPI对应的SPI实现集合,包括:
[0018]当开发者将部分所述SPI实现放置于运行容器中,则利用所述SPI代理从所述运行容器中查找所述当前SPI对应的SPI实现集合;
[0019]当所述运行容器中未查找到所述当前SPI对应的SPI实现集合时,则利用所述SPI代理从所述默认容器中查找所述当前SPI对应的SPI实现集合。
[0020]可选的,所述根据路由条件从所述SPI实现集合中确定所述当前SPI对应的目标SPI实现,包括:
[0021]利用所述SPI代理根据预设优先级对所述SPI实现集合中的SPI实现进行排序,得到各个SPI实现的判断顺序;
[0022]在所述各个SPI实现的判断过程中根据边界条件和互斥关系确定所述目标SPI实现。
[0023]可选的,所述在所述各个SPI实现的判断过程中根据边界条件和互斥关系确定所述目标SPI实现,包括:
[0024]步骤1:利用所述SPI代理判断优先级最高的SPI实现是否满足所述边界条件,当不满足所述边界条件时,则执行步骤3;当满足所述边界条件时,则执行步骤2;
[0025]步骤2:利用所述SPI代理将所述优先级最高的SPI实现执行SPI核心逻辑,判断所述优先级最高的SPI实现是否与其它SPI实现互斥,若不互斥,则执行步骤3;若互斥,则将所述优先级最高的SPI实现确定为所述目标SPI实现;
[0026]步骤3:将下一个优先级最高的SPI实现作为所述优先级最高的SPI实现,执行步骤1,直至所述SPI实现集合中的最后一个SPI实现完成判断。
[0027]可选的,所述优先级最高的SPI实现执行SPI核心逻辑,包括:
[0028]获取开发者从普通执行和链式执行中选择的执行方式;
[0029]所述各个SPI实现根据所述执行方式执行所述SPI核心逻辑。
[0030]本申请还提供了一种路由代理装置,包括:
[0031]SPI和SPI实现选择模块,用于选择符合第一预设条件的SPI和符合第二预设条件的SPI实现;
[0032]代理创建模块,用于为所述SPI创建SPI代理;
[0033]关联关系建立和添加模块,用于将所述SPI实现和所述SPI建立联合关系,并添加到默认容器中;
[0034]当前SPI对应目标SPI实现确定模块,用于利用所述SPI代理从所述默认容器中查找当前SPI对应的SPI实现集合,并根据路由条件从所述SPI实现集合中确定所述当前SPI对应的目标SPI实现;所述当前SPI符合所述预设条件。
[0035]本申请还提供了一种路由代理设备,包括:
[0036]存储器,用于存储计算机程序;
[0037]处理器,用于执行所述计算机程序时实现上述的路由代理方法的步骤。
[0038]本申请还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的路由代理方法的步骤。
[0039]可见,本申请通过选择符合第一预设条件的SPI和符合第二预设条件的SPI实现;为SPI创建SPI代理;将SPI实现和SPI建立联合关系,并添加到默认容器中;利用SPI代理从默认容器中查找当前SPI对应的SPI实现集合,并根据路由条件从SPI实现集合中确定当前SPI对应的目标SPI实现,当前SPI符合第一预设条件。本申请在针对同一个SPI有多个SPI实现的路由问题时,将所有接口的路由问题看作是一个共性的问题,提供了统一的解决方案,不需要针对每个接口都写一个套独立的代码去解决路由问题,简化了代码;并且,本方法还具有轻量化的优势。
[0040]此外,本申请还提供了路由代理装置、设备及存储介质,同样具有上述有益效果。
附图说明
[0041]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0042]图1为本申请实施例提供的一种路由代理方法的流程图;
[0043]图2为本申请实施例提供的一种路由代理启动方法的流程示例图;
[0044]图3为本申请实施例提供的一种路由代理原理图;
[0045]图4为本申请实施例提供的一种路由代理运行方法的流程示例图;
[0046]图5为本申请实施例提供的一种路由代理装置的结构示意图;
[0047]图6为本申请实施例提供的一种路由本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种路由代理方法,其特征在于,包括:选择符合第一预设条件的SPI和符合第二预设条件的SPI实现;为所述SPI创建SPI代理;将所述SPI实现和所述SPI建立联合关系,并添加到默认容器中;利用所述SPI代理从所述默认容器中查找当前SPI对应的SPI实现集合,并根据路由条件从所述SPI实现集合中确定所述当前SPI对应的目标SPI实现;所述当前SPI符合所述第一预设条件。2.根据权利要求1所述的路由代理方法,其特征在于,所述选择符合第一预设条件的SPI和符合第二预设条件的SPI实现,包括:获取基于SpringBoot开发的应用,并确定所述应用启动方法所在的类;判断所述应用启动方法所在的类是否打上了启动注解;若打上了所述启动注解,则选择所述应用中打上了SPI定义注解的SPI;选择打上了SPI实现注解的SPI实现。3.根据权利要求1所述的路由代理方法,其特征在于,所述为所述SPI创建SPI代理,包括:为所述SPI创建Spring的bean,作为所述SPI代理;利用所述Spring将所述SPI代理注入到标记了@Resource的成员变量所在的类中。4.根据权利要求1所述的路由代理方法,其特征在于,所述利用所述SPI代理从所述默认容器中查找当前SPI对应的SPI实现集合,包括:当开发者将部分所述SPI实现放置于运行容器中,则利用所述SPI代理从所述运行容器中查找所述当前SPI对应的SPI实现集合;当所述运行容器中未查找到所述当前SPI对应的SPI实现集合时,则利用所述SPI代理从所述默认容器中查找所述当前SPI对应的SPI实现集合。5.根据权利要求1所述的路由代理方法,其特征在于,所述根据路由条件从所述SPI实现集合中确定所述当前SPI对应的目标SPI实现,包括:利用所述SPI代理根据预设优先级对所述SPI实现集合中的SPI实现进行排序,得到各个SPI实现的判断顺序;在所述各个SPI实现的判断过程中根据边界条件和互斥关系确定所述目标SPI实现。...

【专利技术属性】
技术研发人员:陈东文张培
申请(专利权)人:上海微盟企业发展有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1