CN108874464B - 中间件自动扫描装配方法、装置及存储介质 - Google Patents
中间件自动扫描装配方法、装置及存储介质 Download PDFInfo
- Publication number
- CN108874464B CN108874464B CN201810549002.4A CN201810549002A CN108874464B CN 108874464 B CN108874464 B CN 108874464B CN 201810549002 A CN201810549002 A CN 201810549002A CN 108874464 B CN108874464 B CN 108874464B
- Authority
- CN
- China
- Prior art keywords
- middleware
- executed
- file
- configuration information
- class
- 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
Images
Classifications
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
Abstract
本发明提供了一种中间件自动扫描装配方法,该方法包括:接收业务代码依赖的框架调用组件自动初始化程序的命令,从第一路径中获取预设的配置文件;读取所述配置文件中的第一配置信息,根据所述第一配置信息,从所述业务代码中扫描出待执行对象;及,从第二路径中获取项目对象模型文件,读取所述配置文件中的第二配置信息,根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作,并进行组件增强及注入。本发明还提供一种电子装置及计算机存储介质。利用本发明,可以提高业务开发效率。
Description
技术领域
本发明涉及网络应用技术领域,尤其涉及一种中间件自动扫描装配方法、电子装置及计算机可读存储介质。
背景技术
Spring框架目前是业务开发团队使用最广泛的开发框架。Spring官方提供了针对日常企业应用研发各种场景的spring-boot-starter自动配置依赖模块。然而,每个项目会用到很多通用的中间件,比如:Dubbo、RocketMQ、Tair等等。每个项目中都会有对这些中间件的重复配置代码和工具类,而且每个开发人员对于中间件的理解不同,使用方式代码风格也各不相同,对中间件可能存在误用、错用、滥用的情况,因此需要统一代码规范,减低代码维护成本、减少配置工作,减少代码量,缩短开发周期。
发明内容
鉴于以上内容,本发明提供一种中间件自动扫描装配方法、服务器及计算机可读存储介质,其主要目的在于提高业务开发效率。
为实现上述目的,本发明提供一种中间件自动扫描装配方法,该方法包括:
S1、接收业务代码依赖的框架调用组件自动初始化程序的启动命令,从第一路径中获取预设的配置文件,其中,配置文件中包括:所述业务代码中涉及到的各中间件及所述各中间件必要的配置信息;
S2、读取所述配置文件中的第一配置信息,根据所述第一配置信息,从所述业务代码中扫描出待执行对象;及
S3、从第二路径中获取项目对象模型文件,读取所述配置文件中的第二配置信息,根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作,并进行组件增强及注入。
优选地,所述S2包括:
S21、根据所述配置文件中的第一配置信息,确定所述业务代码中待扫描的类加载路径;
S22、根据所述类加载路径,扫描该类加载路径对应的每个类文件,判断所述类文件中是否包含添加注解的类;及
S23、当所述类文件中包含添加注解的类时,将所述添加注解的类作为待执行对象。
优选地,所述S3中的“根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作”包括:
S31、根据所述项目对象模型文件中的坐标信息,从预设仓库中获取所述待执行对象对应的组件自动初始化程序的依赖;
S32、根据所述待执行对象对应的组件自动初始化程序的依赖,确定所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合;及
S33、根据所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合及所述第二配置信息,执行组件装配操作。
优选地,所述框架为SpringBoot框架。
优选地,所述项目对象模型文件用于定义中间件与第三方组件、中间件与中间件的依赖关系。
此外,本发明还提供一种电子装置,其特征在于,该装置包括:存储器、处理器,所述存储器上存储有可在所述处理器上运行的中间件自动扫描装配程序,所述中间件自动扫描装配程序被所述处理器执行时,可实现如下步骤:
A1、接收业务代码依赖的框架调用组件自动初始化程序的启动命令,从第一路径中获取预设的配置文件,其中,配置文件中包括:所述业务代码中涉及到的各中间件及所述各中间件必要的配置信息;
A2、读取所述配置文件中的第一配置信息,根据所述第一配置信息,从所述业务代码中扫描出待执行对象;及
A3、从第二路径中获取项目对象模型文件,读取所述配置文件中的第二配置信息,根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作,并进行组件增强及注入。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括中间件自动扫描装配程序,所述中间件自动扫描装配程序被处理器执行时,可实现如上所述中间件自动扫描装配方法中的任意步骤。
本发明提出的中间件自动扫描装配方法、电子装置及计算机可读存储介质,通过提供标准POM文件规范中间件与第三方组件、中间件与中间件之间的依赖关系,最大程度上降低Jar包冲突的风险;预先定义各种注解来对业务代码进行标注,通过组件扫描器来完成功能的增强和注入;业务代码中不需要增加组件starter的接口,只需增加指定组件的注解即可使用,通过注解来实现功能的“内聚”;通过解决组件依赖和自动装配问题达到了简化项目配置,减少了使用代码量,提高开发效率。
附图说明
图1为本发明中间件自动扫描装配方法较佳实施例的流程图;
图2为本发明电子装置较佳实施例的示意图;
图3为图2中中间件自动扫描装配程序的程序模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种中间件自动扫描装配方法。参照图1所示,为本发明中间件自动扫描装配方法较佳实施例的流程图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,中间件自动扫描装配方法包括步骤S1-S3:
S1、接收业务代码依赖的框架调用组件自动初始化程序的命令,从第一路径中获取预设的配置文件,其中,配置文件中包括:所述业务代码中涉及到的各中间件及所述各中间件必要的配置信息;
在本实施例中,以中间件RocketMQ为例,但不仅限于中间件RocketMQ,对本发明方案进行说明。
所述框架为SpringBoot框架,业务开发人员基于SpringBoot框架写入业务代码。所述组件自动初始化程序是将某些组件初始化操作自动化进行的程序,以下简称组件Starter。
在启动SpringBoot框架调用组件Starter之前,需预先配置业务相关中间件的配置项,生成配置文件,并将配置文件保存至预设的第一路径中。其中,所述配置文件为YML文件,YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入。
业务开发人员在写入业务代码时,可明确业务代码中涉及的中间件,例如,当业务代码中涉及中间件RocketMQ时,需预先在配置文件中根据RocketMQ-Starter的要求对中间件RocketMQ的配置项进行设置。
例如,针对中间件RocketMQ在配置文件中预先设置的配置项包括:
rocketmq.group.name,表示消费者的组名;
rocketmq.consumer.minthread,表示消费者的最小线程数;
rocketmq.consumer.maxthread,表示消费者的最大线程数;
rocketmq.consumer.basePackage,表示需要被增强为消费者方法的包路径名;
rocketmq.domain.name,表示消费服务器的地址。
S2、读取所述配置文件中的第一配置信息,根据所述第一配置信息,从所述业务代码中扫描出待执行对象;
其中,所述第一配置信息为basePackage。
具体地,所述步骤S2包括:
S21、根据所述配置文件中的第一配置信息,确定所述业务代码中待扫描的类加载路径;
S22、根据所述类加载路径,扫描该类加载路径对应的每个类文件,判断所述类文件中是否包含添加注解的类;及
S23、当所述类文件中包含添加注解的类时,将所述添加注解的类作为待执行对象。
具体地,在启动SpringBoot框架调用组件Starter之前,业务开发人员明确业务代码涉及的中间件后,还需根据各中间件对应的组件Starter指定的注解(Annotation),预先在业务代码中对需要增强的方法(Method)或类上进行标注,确定需要注入或增强的组件类。只有当业务代码中需要注入或增强的组件类标注了注解标记时,这些组件类才会被组件扫描器扫描到Spring容器中。
其中,注解标记包括:@Component 通用注解、@Name通用注解、@Repository 持久化层组件注解、@Service业务层组件注解、@Controller 控制层组件注解等。
需要说明的是,每种组件Starter都对应着不同的注解。以中间件RocketMQ为例,RocketMQ是一种消息中间件,消息中间件会有消息处理的监听方法,需要实现RocketMQ的一系列接口和相关的配置代码才可生效。其对应的RocketMQ-Starter目前只有@RMQConsumer这一中注解,因此,当业务代码中涉及到中间件RocketMQ时,针对RocketMQ-Starter,仅需在业务代码中标注@RMQConsumer这一种注解,通过标注@RMQConsumer这一注解,可以将Method增强为RocketMQ的消费者。另外,在标注@RMQConumser这一注解后,只需要像写普通方法那样去业务代码即可,框架会将其包装成一个消费消息处理的监听方法。
例如,当@RMQConsumer这一注解分别标注在类RocketMQExamples和方法Test1和Test3上面,说明该类的Test1方法和Test3方法是要被增强为RocketMQ的消费者方法的。
S3、从第二路径中获取项目对象模型文件,读取所述配置文件中的第二配置信息,根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作,并进行组件增强及注入。
其中,所述第二配置信息是某个类或方法的个性化配置信息,例如,Test1方法监听的标签(Tag)是A,Test2方法监听的标签(Tag)是B。
具体的,所述“根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作”的步骤包括:
S31、根据所述项目对象模型文件中的坐标信息,从预设仓库中获取所述待执行对象对应的组件自动初始化程序的依赖;
S32、根据所述待执行对象对应的组件自动初始化程序的依赖,确定所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合;及
S33、根据所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合及所述第二配置信息,执行组件装配操作。
其中,项目对象模型(program object model, POM)文件用于定义中间件与第三方组件、中间件与中间件的依赖关系。因此,需预先在POM文件中引入相关组件Starter的依赖。
例如,POM文件中包含启动RocketMQ消费者服务这一中间件的所有依赖。具体地,启动中间件RocketMQ的依赖包括:
windcharger-base表示一些基础工具包的依赖;
windcharger-serialzer表示消息体处理需要的序列化工具类依赖;
rocketmq-client 表示消费者客户端组件相关的依赖;及
rocketmq-srvutils,rocketmq-tools表示rocketmq相关的工具类依赖。
在POM文件中,确定启动中间件RocketMQ需要依赖的其他中间件及第三方组件后,需确定所述其他中间件及第三方组件的坐标信息,供后续利用该坐标信息找到相应的其他中间件及第三方组件并进行组件装配。
其中,所述坐标信息为Maven坐标, Maven的世界是拥有非常多的Java构件的,可能是jar、可能是war、也可能是其他的一些东西。利用Maven坐标唯一标识每一个构件(包括中间件、第三方组件)。
Maven的坐标元素包括groupId、artifactId、version、packaging、classfier。只要我们提供正确的坐标元素,Maven就能找到对应的构件。
所述预设仓库为:本地仓库和/或远程仓库和/或中央仓库。首先从本地仓库查找,没有的话从远程仓库下载。如果没有配置远程仓库,会默认从中央仓库地址(http://repo1.maven.org/maven2)下载构件,该中央仓库包含了世界上大部分流行的开源项目构件,但不一定所有构件都有。
例如,在一个依赖的maven坐标中:
groupId通常表示该依赖包属于哪个组织的哪个模块;
artifactId在groupId下的表示一个单独依赖包的唯一标识符;及
version表示一个依赖包的特定版本(例如:开发版本、内测版本或正式版本)。
利用上述步骤获取待执行对象对应的组件Starter的依赖之后,对所有依赖进行去重处理,以确定待执行对象对应的组件Starter需要依赖的其他中间件及第三方组件的依赖最小集合。
每个组件的装配规则及过程都不一样,组件装配需要的配置项从配置文件中读取。以中间件RocketMQ为例,第二配置信息中需要配置的配置项包括:消费者线程数、消费者组名、消息服务器地址等。
根据所述第二配置信息以及待执行对象对应的组件Starter需要依赖的其他中间件及第三方组件的依赖最小集合,进行组件装配操作,组件装配操作完成后,进行组件增强及注入,并将装配完成后的组件注册到Spring容器中。组件增强及注入的方法为本领域人员习知技术手段,在此不作赘述。
上述实施例提出的中间件自动扫描装配方法,通过提供标准POM文件规范中间件与第三方组件、中间件与中间件之间的依赖关系,最大程度上降低Jar包冲突的风险;预先定义各种注解来对业务代码进行标注,通过组件扫描器来完成功能的增强和注入;业务代码中不需要增加组件starter的接口,只需增加指定组件的注解即可使用,通过注解来实现功能的“内聚”;通过解决组件依赖和自动装配问题达到了简化项目配置,减少了使用代码量,提高开发效率。
本发明还提供一种电子装置。参照图2所示,为本发明电子装置1较佳实施例的示意图。
在本实施例中,电子装置1可以是服务器、智能手机、平板电脑、便携计算机、桌上型计算机等具有数据处理功能的终端设备,所述服务器可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器。
该电子装置1包括存储器11、处理器12,通信总线13,及网络接口14。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘。存储器11在另一些实施例中也可以是所述电子装置1的外部存储设备,例如该电子装置1上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(FlashCard)等。进一步地,存储器11还可以既包括该电子装置1的内部存储单元也包括外部存储设备。
存储器11不仅可以用于存储安装于该电子装置1的应用软件及各类数据,例如中间件自动扫描装配程序10、预先配置的配置文件(图中未标识)及项目对象模型文件(图中未标识)等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(CentralProcessing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如中间件自动扫描装配程序10等。
通信总线13用于实现这些组件之间的连接通信。
网络接口14可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该电子装置1与其他电子设备之间建立通信连接。
图2仅示出了具有组件11-14的电子装置1,本领域技术人员可以理解的是,图2示出的结构并不构成对电子装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
可选地,该电子装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。
可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。其中,显示器也可以称为显示屏或显示单元,用于显示在电子装置1中处理的信息以及用于显示可视化的用户界面。
在图2所示的电子装置1实施例中,作为一种计算机存储介质的存储器11中存储中间件自动扫描装配程序10的程序代码,处理器12执行中间件自动扫描装配程序10的程序代码时,实现如下步骤:
A1、接收业务代码依赖的框架调用组件Starter的启动命令,从第一路径中获取预设的配置文件,其中,配置文件中包括:所述业务代码中涉及到的各中间件及所述各中间件必要的配置信息;
在本实施例中,以中间件RocketMQ为例,但不仅限于中间件RocketMQ,对本发明方案进行说明。
所述框架为SpringBoot框架,业务开发人员基于SpringBoot框架写入业务代码。所述组件自动初始化程序是将某些组件初始化操作自动化进行的程序,以下简称组件Starter。
在启动SpringBoot框架调用组件Starter之前,需预先配置业务相关中间件的配置项,生成配置文件,并将配置文件保存至预设的第一路径中。其中,所述配置文件为YML文件,YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入。
业务开发人员在写入业务代码时,可明确业务代码中涉及的中间件,例如,当业务代码中涉及中间件RocketMQ时,需预先在配置文件中根据RocketMQ-Starter的要求对中间件RocketMQ的配置项进行设置。
例如,针对中间件RocketMQ在配置文件中预先设置的配置项包括:
rocketmq.group.name,表示消费者的组名;
rocketmq.consumer.minthread,表示消费者的最小线程数;
rocketmq.consumer.maxthread,表示消费者的最大线程数;
rocketmq.consumer.basePackage,表示需要被增强为消费者方法的包路径名;
rocketmq.domain.name,表示消费服务器的地址。
A2、读取所述配置文件中的第一配置信息,根据所述第一配置信息,从所述业务代码中扫描出待执行对象;
其中,所述第一配置信息为basePackage;
具体地,所述步骤A2包括:
A21、根据所述配置文件中的第一配置信息,确定所述业务代码中待扫描的类加载路径;
A22、根据所述类加载路径,扫描该类加载路径对应的每个类文件,判断所述类文件中是否包含添加注解的类;及
A23、当所述类文件中包含添加注解的类时,将所述添加注解的类作为待执行对象。
具体地,在启动SpringBoot框架调用组件Starter之前,业务开发人员明确业务代码涉及的中间件后,还需根据各中间件对应的组件Starter指定的注解(Annotation),预先在业务代码中对需要增强的方法(Method)或类上进行标注,确定需要注入或增强的组件类。只有当业务代码中需要注入或增强的组件类标注了注解标记时,这些组件类才会被组件扫描器扫描到Spring容器中。
其中,注解标记包括:@Component 通用注解、@Name通用注解、@Repository 持久化层组件注解、@Service业务层组件注解、@Controller 控制层组件注解等。
需要说明的是,每种组件Starter都对应着不同的注解。以中间件RocketMQ为例,RocketMQ是一种消息中间件,消息中间件会有消息处理的监听方法,需要实现RocketMQ的一系列接口和相关的配置代码才可生效。其对应的RocketMQ-Starter目前只有@RMQConsumer这一中注解,因此,当业务代码中涉及到中间件RocketMQ时,针对RocketMQ-Starter,仅需在业务代码中标注@RMQConsumer这一种注解,通过标注@RMQConsumer这一注解,可以将Method增强为RocketMQ的消费者。另外,在标注@RMQConumser这一注解后,只需要像写普通方法那样去业务代码即可,框架会将其包装成一个消费消息处理的监听方法。
例如,当@RMQConsumer这一注解分别标注在类RocketMQExamples和方法Test1和Test3上面,说明该类的Test1方法和Test3方法是要被增强为RocketMQ的消费者方法的。
A3、从第二路径中获取项目对象模型文件,读取所述配置文件中的第二配置信息,根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作,并进行组件增强及注入。
其中,所述第二配置信息是某个类或方法的个性化配置信息,例如,Test1方法监听的标签(Tag)是A,Test2方法监听的标签(Tag)是B。
具体的,“根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作”的步骤包括:
A31、根据所述项目对象模型文件中的坐标信息,从预设仓库中获取所述待执行对象对应的组件自动初始化程序的依赖;
A32、根据所述待执行对象对应的组件自动初始化程序的依赖,确定所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合;及
A33、根据所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合及所述第二配置信息,执行组件装配操作。
其中,项目对象模型(program object model, POM)文件用于定义中间件与第三方组件、中间件与中间件的依赖关系。因此,需预先在POM文件中引入相关组件Starter的依赖。
例如,POM文件中包含启动RocketMQ消费者服务这一中间件的所有依赖。具体地,启动中间件RocketMQ的依赖包括:
windcharger-base表示一些基础工具包的依赖;
windcharger-serialzer表示消息体处理需要的序列化工具类依赖;
rocketmq-client 表示消费者客户端组件相关的依赖;及
rocketmq-srvutils,rocketmq-tools表示rocketmq相关的工具类依赖。
在POM文件中,确定启动中间件RocketMQ需要依赖的其他中间件及第三方组件后,需确定所述其他中间件及第三方组件的坐标信息,供后续利用该坐标信息找到相应的其他中间件及第三方组件并进行组件装配。
其中,所述坐标信息为Maven坐标, Maven的世界是拥有非常多的Java构件的,可能是jar、可能是war、也可能是其他的一些东西。利用Maven坐标唯一标识每一个构件(包括中间件、第三方组件)。
Maven的坐标元素包括groupId、artifactId、version、packaging、classfier。只要我们提供正确的坐标元素,Maven就能找到对应的构件。
所述预设仓库为:本地仓库和/或远程仓库和/或中央仓库。首先从本地仓库查找,没有的话从远程仓库下载。如果没有配置远程仓库,会默认从中央仓库地址(http://repo1.maven.org/maven2)下载构件,该中央仓库包含了世界上大部分流行的开源项目构件,但不一定所有构件都有。
例如,在一个依赖的maven坐标的示例图。其中:
groupId:通常表示该依赖包属于哪个组织的哪个模块;
artifactId:在groupId下的表示一个单独依赖包的唯一标识符;及
version:表示一个依赖包的特定版本(例如:开发版本、内测版本或正式版本)。
利用上述步骤获取待执行对象对应的组件Starter的依赖之后,对所有依赖进行去重处理,以确定待执行对象对应的组件Starter需要依赖的其他中间件及第三方组件的依赖最小集合。
每个组件的装配规则及过程都不一样,组件装配需要的配置项从配置文件中读取。以中间件RocketMQ为例,第二配置信息中需要配置的配置项包括:消费者线程数、消费者组名、消息服务器地址等。
根据所述第二配置信息以及待执行对象对应的组件Starter需要依赖的其他中间件及第三方组件的依赖最小集合,进行组件装配操作,组件装配操作完成后,进行组件增强及注入,并将装配完成后的组件注册到Spring容器中。组件增强及注入的方法为本领域人员习知技术手段,在此不作赘述。
上述实施例提出的电子装置1,通过提供标准POM文件规范中间件与第三方组件、中间件与中间件之间的依赖关系,最大程度上降低Jar包冲突的风险;预先定义各种注解来对业务代码进行标注,通过组件扫描器来完成功能的增强和注入;业务代码中不需要增加组件starter的接口,只需增加指定组件的注解即可使用,通过注解来实现功能的“内聚”;通过解决组件依赖和自动装配问题达到了简化项目配置,减少了使用代码量,提高开发效率的目的。
可选地,在其他的实施例中,中间件自动扫描装配程序10还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行,以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。例如,参照图3所示,为图2中中间件自动扫描装配程序10的模块示意图,在该实施例中,中间件自动扫描装配程序10可以被分割为接收模块110、扫描模块120及装配模块130,所述模块110-130所实现的功能或操作步骤均与上文类似,此处不再详述,示例性地,例如其中:
接收模块110,用于接收业务代码依赖的框架调用组件自动初始化程序的命令,从第一路径中获取预设的配置文件,其中,配置文件中包括:所述业务代码中涉及到的各中间件及所述各中间件必要的配置信息;
扫描模块120,用于读取所述配置文件中的第一配置信息,根据所述第一配置信息,从所述业务代码中扫描出待执行对象;及
装配模块130,用于从第二路径中获取项目对象模型文件,读取所述配置文件中的第二配置信息,根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作,并进行组件增强及注入。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质中包括中间件自动扫描装配程序10,所述中间件自动扫描装配程序10被处理器执行时实现如下操作:
A1、接收业务代码依赖的框架调用组件自动初始化程序的命令,从第一路径中获取预设的配置文件,其中,配置文件中包括:所述业务代码中涉及到的各中间件及所述各中间件必要的配置信息;
A2、读取所述配置文件中的第一配置信息,根据所述第一配置信息,从所述业务代码中扫描出待执行对象;及
A3、从第二路径中获取项目对象模型文件,读取所述配置文件中的第二配置信息,根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作,并进行组件增强及注入。
优选地,所述步骤A2包括:
A21、根据所述配置文件中的第一配置信息,确定所述业务代码中待扫描的类加载路径;
A22、根据所述类加载路径,扫描该类加载路径对应的每个类文件,判断所述类文件中是否包含添加注解的类;及
A23、当所述类文件中包含添加注解的类时,将所述添加注解的类作为待执行对象。
优选地,所述步骤A3中的“根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作”包括:
A31、根据所述项目对象模型文件中的坐标信息,从预设仓库中获取所述待执行对象对应的组件自动初始化程序的依赖;
A32、根据所述待执行对象对应的组件自动初始化程序的依赖,确定所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合;及
A33、根据所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合及所述第二配置信息,执行组件装配操作。
优选地,所述框架为SpringBoot框架。
优选地,所述项目对象模型文件用于定义中间件与第三方组件、中间件与中间件的依赖关系。
本发明之计算机可读存储介质的具体实施方式与上述中间件自动扫描装配方法的具体实施方式大致相同,在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种中间件自动扫描装配方法,应用于电子装置,其特征在于,所述方法包括:
S1、接收业务代码依赖的框架调用组件自动初始化程序的启动命令,从第一路径中获取预设的配置文件,其中,配置文件中包括:所述业务代码中涉及到的各中间件及所述各中间件必要的配置信息;
S2、读取所述配置文件中的第一配置信息,根据所述第一配置信息,从所述业务代码中扫描出待执行对象;及
S3、从第二路径中获取项目对象模型文件,读取所述配置文件中的第二配置信息,根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作,并进行组件增强及注入;
其中:
所述S2包括:S21、根据所述配置文件中的第一配置信息,确定所述业务代码中待扫描的类加载路径;S22、根据所述类加载路径,扫描该类加载路径对应的每个类文件,判断所述类文件中是否包含添加注解的类;及S23、当所述类文件中包含添加注解的类时,将所述添加注解的类作为待执行对象;
所述S3中的“根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作”包括:S31、根据所述项目对象模型文件中的坐标信息,从预设仓库中获取所述待执行对象对应的组件自动初始化程序的依赖;S32、根据所述待执行对象对应的组件自动初始化程序的依赖,确定所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合;及S33、根据所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合及所述第二配置信息,执行组件装配操作。
2.根据权利要求1所述的中间件自动扫描装配方法,其特征在于,所述框架为SpringBoot框架。
3.根据权利要求2所述的中间件自动扫描装配方法,其特征在于,所述项目对象模型文件用于定义中间件与第三方组件、中间件与中间件的依赖关系。
4.一种电子装置,其特征在于,该装置包括:存储器、处理器,所述存储器上存储有可在所述处理器上运行的中间件自动扫描装配程序,所述中间件自动扫描装配程序被所述处理器执行时,可实现如下步骤:
A1、接收业务代码依赖的框架调用组件自动初始化程序的启动命令,从第一路径中获取预设的配置文件,其中,配置文件中包括:所述业务代码中涉及到的各中间件及所述各中间件必要的配置信息;
A2、读取所述配置文件中的第一配置信息,根据所述第一配置信息,从所述业务代码中扫描出待执行对象;及
A3、从第二路径中获取项目对象模型文件,读取所述配置文件中的第二配置信息,根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作,并进行组件增强及注入;
其中:
所述A2包括:A21、根据所述配置文件中的第一配置信息,确定所述业务代码中待扫描的类加载路径;A22、根据所述类加载路径,扫描该类加载路径对应的每个类文件,判断所述类文件中是否包含添加注解的类;及A23、当所述类文件中包含添加注解的类时,将所述添加注解的类作为待执行对象;
所述A3中的“根据所述项目对象模型文件、第二配置信息及所述待执行对象,执行组件装配操作”包括:A31、根据所述项目对象模型文件中的坐标信息,从预设仓库中获取所述待执行对象对应的组件自动初始化程序的依赖;A32、根据所述待执行对象对应的组件自动初始化程序的依赖,确定所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合;及A33、根据所述待执行对象对应的组件自动初始化程序需要依赖的依赖最小集合及所述第二配置信息,执行组件装配操作。
5.根据权利要求4所述的电子装置,其特征在于,
所述框架为SpringBoot框架;及
所述项目对象模型文件用于定义中间件与第三方组件、中间件与中间件的依赖关系。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括中间件自动扫描装配程序,所述中间件自动扫描装配程序被处理器执行时,可实现如权利要求1至3任意一项所述的中间件自动扫描装配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810549002.4A CN108874464B (zh) | 2018-05-31 | 2018-05-31 | 中间件自动扫描装配方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810549002.4A CN108874464B (zh) | 2018-05-31 | 2018-05-31 | 中间件自动扫描装配方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874464A CN108874464A (zh) | 2018-11-23 |
CN108874464B true CN108874464B (zh) | 2023-03-21 |
Family
ID=64336279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810549002.4A Active CN108874464B (zh) | 2018-05-31 | 2018-05-31 | 中间件自动扫描装配方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874464B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109858257B (zh) * | 2018-12-27 | 2021-06-18 | 北京互金新融科技有限公司 | 访问控制方法及装置 |
CN110221820A (zh) * | 2019-04-23 | 2019-09-10 | 平安科技(深圳)有限公司 | spring框架泛型依赖注入方法、装置及计算机设备、存储介质 |
CN111221570B (zh) * | 2019-12-30 | 2022-07-15 | 中国平安财产保险股份有限公司 | 微服务框架的迁移方法、装置、设备及存储介质 |
CN111309713B (zh) * | 2020-05-14 | 2020-08-18 | 深圳开源互联网安全技术有限公司 | Maven开源软件库的生成方法、装置及存储介质 |
CN111709050A (zh) * | 2020-05-21 | 2020-09-25 | 四川虹美智能科技有限公司 | 初始化权限配置参数的方法及装置 |
CN113986338B (zh) * | 2021-12-28 | 2022-04-15 | 深圳市明源云科技有限公司 | 项目扫包方法、系统、设备及计算机可读存储介质 |
-
2018
- 2018-05-31 CN CN201810549002.4A patent/CN108874464B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108874464A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874464B (zh) | 中间件自动扫描装配方法、装置及存储介质 | |
CN108287694B (zh) | 应用程序构建方法、系统、计算机设备和存储介质 | |
CN107656729B (zh) | 列表视图的更新装置、方法及计算机可读存储介质 | |
CN108874924B (zh) | 搜索服务的创建方法、装置及计算机可读存储介质 | |
CN108845839B (zh) | 应用页面加载方法、装置及计算机可读存储介质 | |
WO2018210096A1 (zh) | 一种基于规则引擎的规则配置方法、终端、设备以及存储介质 | |
CN109240697B (zh) | 调用处理方法及装置、存储介质 | |
CN108762767B (zh) | 应用发布方法、装置及计算机可读存储介质 | |
CN111068328A (zh) | 游戏广告配置表格的生成方法、终端设备及介质 | |
CN107463405B (zh) | 一种应用程序的更新方法及装置 | |
CN112416458A (zh) | 基于ReactNative的预加载方法、装置、计算机设备及存储介质 | |
CN111694613A (zh) | 应用程序模块间的解耦方法、电子装置及存储介质 | |
CN113703862A (zh) | 基于配置的接口调用方法、装置、设备及存储介质 | |
KR101117165B1 (ko) | 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛 | |
CN110737463A (zh) | 一种关键函数源头信息的分析方法、智能终端及存储介质 | |
CN108804120B (zh) | 一种页面构建方法、装置、设备及存储介质 | |
CN112306473B (zh) | 一种程序接口传参方法、系统及相关设备 | |
CN111158777B (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN106775879B (zh) | 基于安卓系统客户端的vr应用免安装方法及其系统 | |
CN117033249A (zh) | 一种测试用例生成方法、装置、计算机设备及存储介质 | |
CN112596746A (zh) | 应用安装包生成方法、装置、计算机设备和存储介质 | |
CN112083925A (zh) | 基于h5页面开发的数据获取方法、装置、设备及存储介质 | |
CN111782239A (zh) | 软件打包和源码版本信息获取方法、装置及存储介质 | |
CN110659022A (zh) | 一种基于Java自动调用Python脚本的方法 | |
CN112104544B (zh) | 一种基于FreeMarker发送动态邮件的方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |