一种基于注解的组件加载方法、系统、终端及存储介质与流程

未命名 08-07 阅读:50 评论:0


1.本技术涉及计算机技术领域,特别是涉及一种于注解的组件加载方法、系统、终端及存储介质。


背景技术:

2.随着互联网技术的发展,各类基础技术迭代也在不断更新,系统业务功能的运行也离不开一些中间件的支持。在大数据系统中会经常用到hadoop(hadoop是一个由apache基金会所开发的分布式系统基础架构)的组件,如hdfs(hadoop distributed file system,hadoop分布式文件系统),hive(hive是基于hadoop的一个数据仓库工具),yarn(yet another resource negotiator,另一种资源协调者,是一种新的hadoop资源管理器)等一系列的组件。
3.大数据系统在使用组件过程中,需要对相应的组件进行连接,现有的组件加载方法中,一般通过配置文件的方式进行组件的加载连接,但在大数据系统中因为加载组件过多,现有的组件加载连接方式过于复杂,而且配置文件的无法动态改动,使得无法灵活切换配置,无法进行按需加载组件。
4.因此,如何实现组件的按需加载,是本领域技术人员亟待解决的技术问题。


技术实现要素:

5.为解决上述技术问题,本技术提供一种基于注解的组件加载方法,能够实现组件的按需加载。本技术还提供一种基于注解的组件加载系统、终端及存储介质,具有相同的技术效果。
6.本技术的第一个目的为提供一种基于注解的组件加载方法。
7.本技术的上述申请目的一是通过以下技术方案得以实现的:一种基于注解的组件加载方法,包括:获取在应用程序源代码中预先创建好的目标类,其中,所述目标类包括:基础组件加载抽象类、组件实现类、自动加载组件的自定义注解类、自动加载组件类和加载组件常量类;在所述自动加载组件的自定义注解类上添加所述自动加载组件类;获取所述应用程序的应用启动类,并在所述应用启动类上添加所述自动加载组件的自定义注解类,注解的值为所述加载组件常量类里配置的组件的常量属性字段;在所述应用程序启动时,运行所述应用启动类,并通过所述目标类,加载需要使用的组件;其中,所述运行所述应用启动类,并通过所述目标类,加载需要使用的组件,包括:运行所述应用启动类,通过所述应用启动类上添加的所述自动加载组件的自定义注解类和所述加载组件常量类里配置的组件,配置需要使用的组件;通过所述自动加载组件的自定义注解类上添加的所述自动加载组件类,运行所述
自动加载组件类中的方法函数;获取所述自动加载组件的自定义注解类需要使用的组件的配置数据;获取所有继承了所述基础组件加载抽象类的组件实现类集合;根据所述配置数据,加载所述组件实现类集合中对应的所述组件实现类,以加载需要使用的组件。
8.优选地,所述基于注解的组件加载方法中,还包括:在所述应用程序使用时,通过所述基础组件加载抽象类,来实现组件加载配置文件的动态更换。
9.优选地,所述基于注解的组件加载方法中,所述通过所述基础组件加载抽象类,来实现组件加载配置文件的动态更换,包括:通过所述基础组件加载抽象类的loadfile方法函数,通过数据的动态查询,来实现组件加载配置文件的动态更换。
10.优选地,所述基于注解的组件加载方法中,还包括:在所述应用程序使用时,通过所述基础组件加载抽象类,来实现组件加载使用方式的统一。
11.优选地,所述基于注解的组件加载方法中,通过所述基础组件加载抽象类,来实现组件加载使用方式的统一,包括:通过所述基础组件加载抽象类的load方法函数,使用抽象工厂模式,来实现组件加载使用方式的统一。
12.优选地,所述基于注解的组件加载方法中,所述组件实现类包括hdfs加载类和yarn加载类,其中:所述hdfs加载类,继承所述基础组件加载抽象类,用于实现load和gettype方法函数;所述yarn加载类,继承所述基础组件加载抽象类,用于实现load和gettype方法函数。
13.本技术的第二个目的为提供一种基于注解的组件加载系统。
14.本技术的上述申请目的二是通过以下技术方案得以实现的:一种基于注解的组件加载系统,包括:获取单元,用于获取在应用程序源代码中预先创建好的目标类,其中,所述目标类包括:基础组件加载抽象类、组件实现类、自动加载组件的自定义注解类、自动加载组件类和加载组件常量类;第一注解单元,用于在所述自动加载组件的自定义注解类上添加所述自动加载组件类;第二注解单元,用于获取所述应用程序的应用启动类,并在所述应用启动类上添加所述自动加载组件的自定义注解类,注解的值为所述加载组件常量类里配置的组件的常量属性字段;加载单元,用于在所述应用程序启动时,运行所述应用启动类,并通过所述目标类,加载需要使用的组件;其中,所述加载单元,在执行所述运行所述应用启动类,并通过所述目标类,加载
需要使用的组件时,具体用于:运行所述应用启动类,通过所述应用启动类上添加的所述自动加载组件的自定义注解类和所述加载组件常量类里配置的组件,配置需要使用的组件;通过所述自动加载组件的自定义注解类上添加的所述自动加载组件类,运行所述自动加载组件类中的方法函数;获取所述自动加载组件的自定义注解类需要使用的组件的配置数据;获取所有继承了所述基础组件加载抽象类的组件实现类集合;根据所述配置数据,加载所述组件实现类集合中对应的所述组件实现类,以加载需要使用的组件。
15.本技术的第三个目的为提供一种基于注解的组件加载终端。
16.本技术的上述申请目的三是通过以下技术方案得以实现的:一种基于注解的组件加载终端,包括:存储介质和处理器;所述存储介质内存储计算机执行指令;所述处理器执行所述存储介质存储的计算机执行指令,以实现上述基于注解的组件加载方法中任一所述方法。
17.本技术的第四个目的为提供一种计算机可读存储介质。
18.本技术的上述申请目的四是通过以下技术方案得以实现的:一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述基于注解的组件加载方法中任一所述方法。
19.上述技术方案,通过在应用程序源代码中预先创建好的目标类,其中,目标类包括:基础组件加载抽象类、组件实现类、自动加载组件的自定义注解类、自动加载组件类和加载组件常量类;在自动加载组件的自定义注解类上添加自动加载组件类;获取应用程序的应用启动类,并在应用启动类上添加自动加载组件的自定义注解类,注解的值为加载组件常量类里配置的组件的常量属性字段;在应用程序启动时,运行应用启动类,并通过目标类,加载需要使用的组件,具体包括:运行应用启动类,通过应用启动类上添加的自动加载组件的自定义注解类和加载组件常量类里配置的组件,配置需要使用的组件;通过自动加载组件的自定义注解类上添加的自动加载组件类,运行自动加载组件类中的方法函数;获取自动加载组件的自定义注解类需要使用的组件的配置数据;获取所有继承了基础组件加载抽象类的组件实现类集合;根据配置数据,加载组件实现类集合中对应的组件实现类,以加载需要使用的组件。
20.本技术方案在使用中支持按需进行加载所用的组件,增加了系统对组件的可选性。综上可知,上述技术方案能够实现组件的按需加载。
附图说明
21.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1为本技术实施例中提供的一种基于注解的组件加载方法的流程示意图;图2为本技术实施例中提供的一种基于注解的组件加载系统的结构示意图;图3为本技术实施例中提供的一种基于注解的组件加载终端的结构示意图。
具体实施方式
23.为了使本领域的技术人员更好地理解本技术中的技术方案,下面将对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
24.在本技术所提供的实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。以下所描述的系统实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个模块或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
25.应当理解,本技术中如若使用了“系统”、“装置”、“单元”和/或“模块”,仅是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换该词语。
26.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多该特征。在本技术的描述中,“多个”、“若干个”的含义是两个或两个以上,除非另有明确具体的限定。
27.本技术中如若使用了流程图,则该流程图是用来说明根据本技术的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
28.还需要说明的是,在本文中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括上述要素的物品或者设备中还存在另外的相同要素。
29.本技术实施例采用递进的方式撰写。
30.如图1所示,本技术实施例提供一种基于注解的组件加载方法,包括:s101.获取在应用程序源代码中预先创建好的目标类,其中,目标类包括:基础组件加载抽象类、组件实现类、自动加载组件的自定义注解类、自动加载组件类和加载组件常量类;在s101中,具体地,应用程序可以基于java编程语言和spring框架实现,spring框架是一个开放源代码的j2ee应用程序框架。在java中,类就是某些具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象,在面向对象的程
序设计语言中,类是对一类“事物”的属性与行为的抽象。一组经过很好选择的用户定义的类会使程序更加简洁,此外,它还能使各种形式的代码分析更容易进行,特别地,它还会使编译器有可能检查对象的非法使用。在一些实施例中,可以通过java映射,获取和使用目标类中的目标方法。目标类也可以通过其他方式获取,本技术对此不作限制。
31.在具体实施例中,可以预先创建基础组件加载抽象类【baseload】,并在【baseload】类里定义以下三个方法函数:1.抽象方法load,方法返回值类型为org.apache.hadoop.conf.configuration类,方法的主要作用为:组装具体组件可用的配置操作类,加载配置文件,加载配置参数等。
32.2.方法loadfile,方法返回值类型为list《string》,方法的主要作用为:通过类型查询数据库,查询到对应的文件内容和文件本地地址,生成本地文件,返回新的文件地址。
33.3.抽象方法gettype,方法返回值类型为string,方法的主要作用为:定义组件编码,可通过对应编码找到类。
34.在java中,普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。而拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。抽象类存在的一个最大意义就是被继承,当被继承后就可以利用抽象类实现多态。
35.在具体实施例中,可以预先创建继承了基础组件加载抽象类【baseload】的组件实现类,组件实现类可以包括hdfs加载类【hdfsload】和yarn加载类【yarnload】,其中:hdfs加载类【hdfsload】,继承基础组件加载抽象类【baseload】,用于实现load和gettype方法函数;yarn加载类【yarnload】,继承基础组件加载抽象类【baseload】,用于实现load和gettype方法函数。
36.在java中,实现类就是实现接口中约定的内容,接口中定义规范,实现类来确定规范如何运行的。
37.在具体实施例中,可以预先创建自动加载组件的自定义注解类@enablehadoopload,其中:@enablehadoopload具有以下字段属性:value,其类型为string[];并将以下原始注解标记在@enablehadoopload类上:1.@target({elementtype.type})(标记为类类型);2.@retention(retentionpolicy.runtime)(标记为运行时)。
[0038]
在java等编程语言中,注解(annotation)是一种应用于类、方法、参数、变量、构造器或包声明中的特殊修饰符,是用来描述元数据的一种工具。自定义注解为系统内置注解之外的、由开发人员利用元注解自行编写的注解。具体应用中,系统提供以下四种元注解:@documented

用于确定定义的注解是否将包含在java文档中;@retention

用于确定什么时候使用定义的注解;@target

用于确定注解用于什么地方;
@inherited

用于确定是否允许子类继承定义的注解。
[0039]
需要说明的是,上述注解完全不同于注释。一般地,注释用于告知开发人员代码的逻辑、说明、特点等,可以无限制的随意编写;编译时,注释会被编译器完全忽略。注解是通过标注类、方法、参数、变量、构造器或包等元素,告知java虚拟机这些元素的元数据,其一般以“@”起始,对于位置、语法、内容都有严格的限制,如果有任何错误,编译过程中就会显示异常。
[0040]
在具体实施例中,可以预先创建自动加载组件类【loadimportselector】,自动加载组件类【loadimportselector】用于实现importselector接口,实现方法函数selectimports;其中,方法函数selectimports具体实现为:1.通过方法函数annotationmetadata.getannotationattributes获取@enablehadoopload注解类的属性字段值集合;2.判断注解类的属性字段值集合是否为空,若为“空”,则返回new string[0],若不为“空”,则通过注解类的属性字段值集合获取

value’属性字段值;3.判断

value’属性字段值是否为空,若为

空’则,返回new string[0],若不为“空”,则返回

value’属性字段值。
[0041]
在具体实施例中,可以预先创建加载组件常量类【loadconstant】,定义需要加载组件的常量属性字段和值。
[0042]
以下为示例:public static final string hdfs="【hdfsload】类的包名";public static final string yarn="【yarnload】类的包名"。
[0043]
在java中实现常量类和常量方法是通过关键字final实现。通常分为两种情况:1.编译时一种不可变的常量;2.运行时初始化,但不希望被改变的变量。编译时的常量,编译器可以将它的值代入用到它的任何地方,也就是说在编译时就已经执行了计算式,减少了运行时的负担,优化了性能。在java这些常量必须为基本类型,并且必须赋值。
[0044]
s102.在自动加载组件的自定义注解类上添加自动加载组件类;在s102中,具体地,可以在@enablehadoopload注解类上添加@import注解,注解的值为【loadimportselector】类,即自动加载组件类,作用为:通过@import注解在应用启动时自动加载 【loadimportselector】类,并运行类里面具体方法函数。
[0045]
s103.获取应用程序的应用启动类,并在应用启动类上添加自动加载组件的自定义注解类,注解的值为加载组件常量类里配置的组件的常量属性字段;在s103中,具体地,应用启动类可以在应用程序源代码中预先创建,在本步骤中,通过在应用启动类上添加@enablehadoopload注解,注解的值为【loadconstant】类(即加载组件常量类)里面的具体组件的常量属性字段,作用为:通过@enablehadoopload注解配置引入需要加载的组件。
[0046]
s104.在应用程序启动时,运行应用启动类,并通过目标类,加载需要使用的组件。
[0047]
在s104中,本步骤的具体实现方式包括:在应用程序启动时,运行应用启动类,通过应用启动类上添加的自动加载组件的自定义注解类和加载组件常量类里配置的组件,配置需要使用的组件;通过自动加载组件的自定义注解类上添加的自动加载组件类,运行自
动加载组件类中的方法函数;获取自动加载组件的自定义注解类需要使用的组件的配置数据;获取所有继承了基础组件加载抽象类的组件实现类集合;根据配置数据,加载组件实现类集合中对应的组件实现类,以加载需要使用的组件。以此实现组件的按需加载,增加了系统对组件的可选性。
[0048]
在具体实施例中,可以通过应用启动类上标记的@enablehadoopload注解和【loadconstant】类里配置的组件,配置需要进行加载的组件;可以通过@enablehadoopload注解加载里面标记的【loadimportselector】类,运行【loadimportselector】类里具体方法函数,获取@enablehadoopload注解需要加载的组件配置数据,获取所有继承了基础组件加载抽象【baseload】类的组件实现类集合。通过组件配置数据在组件实现类集合里找到对应的组件实现类(例如【hdfsload】类,【yarnload】类等都是组件实现类)。
[0049]
大数据系统在使用组件过程中,需要对相应的组件进行连接,现有的组件加载方法中,一般通过配置文件的方式进行组件的加载连接,但在大数据系统中因为加载组件过多,现有的组件加载连接方式过于复杂,而且配置文件的无法动态改动,使得无法灵活切换配置,无法进行按需加载组件。
[0050]
上述实施例,通过在应用程序源代码中预先创建好的目标类,其中,目标类包括:基础组件加载抽象类、组件实现类、自动加载组件的自定义注解类、自动加载组件类和加载组件常量类;在自动加载组件的自定义注解类上添加自动加载组件类;获取应用程序的应用启动类,并在应用启动类上添加自动加载组件的自定义注解类,注解的值为加载组件常量类里配置的组件的常量属性字段;在应用程序启动时,运行应用启动类,并通过目标类,加载需要使用的组件,具体包括:运行应用启动类,通过应用启动类上添加的自动加载组件的自定义注解类和加载组件常量类里配置的组件,配置需要使用的组件;通过自动加载组件的自定义注解类上添加的自动加载组件类,运行自动加载组件类中的方法函数;获取自动加载组件的自定义注解类需要使用的组件的配置数据;获取所有继承了基础组件加载抽象类的组件实现类集合;根据配置数据,加载组件实现类集合中对应的组件实现类,以加载需要使用的组件。
[0051]
上述实施例在使用中支持按需进行加载所用的组件,增加了系统对组件的可选性。综上可知,上述实施例能够实现组件的按需加载。
[0052]
在本技术的其他实施例中,所述基于注解的组件加载方法中,还包括:s201.在应用程序使用时,通过基础组件加载抽象类,来实现组件加载配置文件的动态更换。
[0053]
在s201中,具体地,可以通过组件的编码从数据库查询组件配置数据,根据组件配置数据生成本地配置文件,在加载连接时添加具体组件所需的本地配置文件,来实现组件加载配置文件的动态更换。在一些实施例中,本步骤的其中一种实现方式,具体为:通过基础组件加载抽象类的loadfile方法函数,通过数据的动态查询,来实现组件加载配置文件的动态更换。通过修改数据库里组件配置数据,再通过数据的动态查询,并生成本地配置文件,以此实现组件加载配置文件的动态更换。
[0054]
在本实施例中,考虑到在大数据系统中配置文件的无法动态改动造成无法灵活切换配置,缺乏灵活性的问题,通过基础组件加载抽象类实现了通过组件配置文件的动态更换,减少了系统暂停的风险,增加了系统的灵活性。
[0055]
在本技术的其他实施例中,所述基于注解的组件加载方法中,还包括:s301.在应用程序使用时,通过基础组件加载抽象类,来实现组件加载使用方式的统一。
[0056]
在s301中,具体地,本步骤的其中一种实现方式,具体为:通过基础组件加载抽象类的load方法函数,使用抽象工厂模式,来实现组件加载使用方式的统一。通过使用抽象工厂模式,所有组件实现类继承基础组件加载抽象类,并实现load方法函数,系统进行组件加载时,直接统一调用load方法函数,以此实现组件加载使用方式的统一。
[0057]
其中,抽象工厂模式(abstract factory pattern)隶属于设计模式中的创建型模式,用于产品族的构建。通过使用抽象工厂模式,可以分离具体的类,客户通过抽象接口操纵实例,产品的类名也在具体工厂的实现中被分离,它们不出现在客户代码中。使用抽象工厂模式,同时易于交换产品系列,一个具体工厂类只在初始化时出现一次,这使得改变一个应用的具体工厂变得很容易,只需改变具体的工厂即可使用不同的产品配置。此外,使用抽象工厂模式,有利于产品的一致性,当一个系列的产品对象被设计成一起工作时,一个应用一次只能使用同一个系列中的对象,这一点很重要,而抽象工厂很容易实现这一点。
[0058]
在本实施例中,考虑到在大数据系统中因为加载组件过多,现有的组件加载连接方式过于复杂,并且使用方式不统一。通过基础组件加载抽象类,可以实现了统一的组件加载处理,减少开发人员编写重复代码的工作时间,加快工作效率,让开发人员能更关注于业务开发。
[0059]
如图2所示,在本技术的另一实施例中,还提供一种基于注解的组件加载系统,包括:获取单元10,用于获取在应用程序源代码中预先创建好的目标类,其中,目标类包括:基础组件加载抽象类、组件实现类、自动加载组件的自定义注解类、自动加载组件类和加载组件常量类;第一注解单元11,用于在自动加载组件的自定义注解类上添加自动加载组件类;第二注解单元12,用于获取应用程序的应用启动类,并在应用启动类上添加自动加载组件的自定义注解类,注解的值为加载组件常量类里配置的组件的常量属性字段;加载单元13,用于在应用程序启动时,运行应用启动类,并通过目标类,加载需要使用的组件;其中,加载单元13,在执行运行应用启动类,并通过目标类,加载需要使用的组件时,具体用于:运行应用启动类,通过应用启动类上添加的自动加载组件的自定义注解类和加载组件常量类里配置的组件,配置需要使用的组件;通过自动加载组件的自定义注解类上添加的自动加载组件类,运行自动加载组件类中的方法函数;获取自动加载组件的自定义注解类需要使用的组件的配置数据;获取所有继承了基础组件加载抽象类的组件实现类集合;根据配置数据,加载组件实现类集合中对应的组件实现类,以加载需要使用的组件。
[0060]
如图3所示,在本技术的另一实施例中,还提供一种基于注解的组件加载终端,包
括:存储介质20和处理器21;所述存储介质20内存储计算机执行指令;所述处理器21执行所述存储介质20存储的计算机执行指令,以实现上述基于注解的组件加载方法中任一所述方法。
[0061]
其中,处理器21可以包括一个或者多个处理核心。处理器21通过运行或执行存储在存储介质20内的指令、程序、代码集或指令集,调用存储在存储介质20内的数据,执行本技术的各种功能和处理数据。处理器21可以为特定用途集成电路、数字信号处理器、数字信号处理装置、可编程逻辑装置、现场可编程门阵列、中央处理器、控制器、微控制器和微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器21功能的电子器件还可以为其它。
[0062]
其中,存储介质20可用于存储指令、程序、代码、代码集或指令集。存储介质20可以包括存储程序区和存储数据区,其中存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令以及用于实现上述任一基于注解的组件加载方法的指令等;存储数据区可存储上述任一基于注解的组件加载方法中涉及到的数据等。
[0063]
在本技术的另一实施例中,还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述基于注解的组件加载方法中任一所述方法。
[0064]
其中,所述计算机可读存储介质,可以为u盘、移动硬盘、只读存储器、随机存取存储器或者光盘等各种可以存储程序代码的介质。
[0065]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种基于注解的组件加载方法,其特征在于,包括:获取在应用程序源代码中预先创建好的目标类,其中,所述目标类包括:基础组件加载抽象类、组件实现类、自动加载组件的自定义注解类、自动加载组件类和加载组件常量类;在所述自动加载组件的自定义注解类上添加所述自动加载组件类;获取所述应用程序的应用启动类,并在所述应用启动类上添加所述自动加载组件的自定义注解类,注解的值为所述加载组件常量类里配置的组件的常量属性字段;在所述应用程序启动时,运行所述应用启动类,并通过所述目标类,加载需要使用的组件;其中,所述运行所述应用启动类,并通过所述目标类,加载需要使用的组件,包括:运行所述应用启动类,通过所述应用启动类上添加的所述自动加载组件的自定义注解类和所述加载组件常量类里配置的组件,配置需要使用的组件;通过所述自动加载组件的自定义注解类上添加的所述自动加载组件类,运行所述自动加载组件类中的方法函数;获取所述自动加载组件的自定义注解类需要使用的组件的配置数据;获取所有继承了所述基础组件加载抽象类的组件实现类集合;根据所述配置数据,加载所述组件实现类集合中对应的所述组件实现类,以加载需要使用的组件。2.如权利要求1所述的方法,其特征在于,还包括:在所述应用程序使用时,通过所述基础组件加载抽象类,来实现组件加载配置文件的动态更换。3.如权利要求2所述的方法,其特征在于,所述通过所述基础组件加载抽象类,来实现组件加载配置文件的动态更换,包括:通过所述基础组件加载抽象类的loadfile方法函数,通过数据的动态查询,来实现组件加载配置文件的动态更换。4.如权利要求1所述的方法,其特征在于,还包括:在所述应用程序使用时,通过所述基础组件加载抽象类,来实现组件加载使用方式的统一。5.如权利要求4所述的方法,其特征在于,通过所述基础组件加载抽象类,来实现组件加载使用方式的统一,包括:通过所述基础组件加载抽象类的load方法函数,使用抽象工厂模式,来实现组件加载使用方式的统一。6.如权利要求1所述的方法,其特征在于,所述组件实现类包括hdfs加载类和yarn加载类,其中:所述hdfs加载类,继承所述基础组件加载抽象类,用于实现load和gettype方法函数;所述yarn加载类,继承所述基础组件加载抽象类,用于实现load和gettype方法函数。7.一种基于注解的组件加载系统,其特征在于,包括:获取单元,用于获取在应用程序源代码中预先创建好的目标类,其中,所述目标类包括:基础组件加载抽象类、组件实现类、自动加载组件的自定义注解类、自动加载组件类和加载组件常量类;
第一注解单元,用于在所述自动加载组件的自定义注解类上添加所述自动加载组件类;第二注解单元,用于获取所述应用程序的应用启动类,并在所述应用启动类上添加所述自动加载组件的自定义注解类,注解的值为所述加载组件常量类里配置的组件的常量属性字段;加载单元,用于在所述应用程序启动时,运行所述应用启动类,并通过所述目标类,加载需要使用的组件;其中,所述加载单元,在执行所述运行所述应用启动类,并通过所述目标类,加载需要使用的组件时,具体用于:运行所述应用启动类,通过所述应用启动类上添加的所述自动加载组件的自定义注解类和所述加载组件常量类里配置的组件,配置需要使用的组件;通过所述自动加载组件的自定义注解类上添加的所述自动加载组件类,运行所述自动加载组件类中的方法函数;获取所述自动加载组件的自定义注解类需要使用的组件的配置数据;获取所有继承了所述基础组件加载抽象类的组件实现类集合;根据所述配置数据,加载所述组件实现类集合中对应的所述组件实现类,以加载需要使用的组件。8.一种基于注解的组件加载终端,其特征在于,包括:存储介质和处理器;所述存储介质内存储计算机执行指令;所述处理器执行所述存储介质存储的计算机执行指令,以实现如权利要求1至6中任一项所述的方法。9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至6中任一项所述的方法。

技术总结
本申请提供一种基于注解的组件加载方法、系统、终端及存储介质,涉及计算机技术领域,特别是涉及一种基于注解的组件加载方法,所述方法包括:获取在应用程序源代码中预先创建好的目标类,其中,所述目标类包括:基础组件加载抽象类、组件实现类、自动加载组件的自定义注解类、自动加载组件类和加载组件常量类;在所述自动加载组件的自定义注解类上添加所述自动加载组件类;获取所述应用程序的应用启动类,并在所述应用启动类上添加所述自动加载组件的自定义注解类,注解的值为所述加载组件常量类里配置的组件的常量属性字段;在所述应用程序启动时,运行所述应用启动类,并通过所述目标类,加载需要使用的组件。本申请能够实现组件的按需加载。件的按需加载。件的按需加载。


技术研发人员:廖振伟 李国庆 左勇
受保护的技术使用者:智慧眼科技股份有限公司
技术研发日:2023.07.06
技术公布日:2023/8/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐