一种策略加载与注入的方法及装置的制造方法
【专利摘要】本发明公开了一种策略加载与注入的方法及装置,该方法包括:接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文;对程序进行加载,并初始化响应的策略注入工厂;调用所述策略注入工厂对配置范围内的适配器实现类进行寻址排序;从适配器中选择满足预设条件的适配器进行初始化与注入。本发明所提供的策略加载与注入的方法及装置,能够根据需要启动对应模块,并在运行时通过策略加载运行,从而支持不同客户的个性化业务需求。本申请能够真正统一产品版本,原子化各种业务实现模式。
【专利说明】
一种策略加载与注入的方法及装置
技术领域
[0001]本发明涉及web程序个性化技术领域,特别是涉及一种策略加载与注入的方法及
目.ο
【背景技术】
[0002]随着科学技术的发展,web程序个性化需求越来越多,且差异性也越来越大,web程序产品化带来的个性配置或版本繁多,程序逻辑复杂、维护困难,项目化的开发和维护带来较大的人力开销。
[0003]Maven提供war、assembly等一系列动态发布的插件,在产品模块化开发的基础上,可根据不同的需要实现不同的模块拼装发布。OSGi可以动态地安装、卸载、启动和停止应用程序中的不同模块;对于应用程序中的某一特定模块,容器可以同时运行该模块的多个版本。
[0004]Maven动态发布可以满足个性化需求的独立发包,但导致产品发布版本过多。OSGi需要开发遵循新的规范,学习成本较高,且必须运行在新的容器中。因此,以上两种方案都只能做到模块层次的划分,而对于更细层次的运行,加载策略无法支持。
【发明内容】
[0005]本发明的目的是提供一种策略加载与注入的方法及装置,目的在于解决web程序产品化带来的个性配置或版本繁多,程序逻辑复杂,维护困难,人力成本较高的问题。
[0006]为解决上述技术问题,本发明提供一种策略加载与注入的方法,包括:
[0007]接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文;
[0008]对程序进行加载,并初始化响应的策略注入工厂;
[0009]调用所述策略注入工厂对配置范围内的适配器实现类进行寻址排序;
[0010]从适配器中选择满足预设条件的适配器进行初始化与注入。
[0011]可选地,所述策略注入工厂为按照不同模块以及适配器层级定义规则定义的寻址算法,满足所述预设条件的适配器优先被注入。
[0012]可选地,所述从适配器中选择满足预设条件的适配器进行初始化与注入包括:
[0013]将距离被注入service最近路径的适配器进行初始化与注入。
[0014]可选地,所述从适配器中选择满足预设条件的适配器进行初始化与注入包括:
[0015]按照优先级顺序将优先级最高的适配器进行初始化与注入。
[0016]可选地,所述对程序进行加载包括:
[0017]通过spring的Iazyload对程序进行懒加载。
[0018]本发明还提供了一种策略加载与注入的装置,包括:
[0019]指令接收模块,用于接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文;
[0020]程序加载模块,用于对程序进行加载,并初始化响应的策略注入工厂;[0021 ]寻址排序模块,用于调用所述策略注入工厂对配置范围内的适配器实现类进行寻址排序;
[0022]注入模块,用于从适配器中选择满足预设条件的适配器进行初始化与注入。
[0023]可选地,所述策略注入工厂为按照不同模块以及适配器层级定义规则定义的寻址算法,满足所述预设条件的适配器优先被注入。
[0024]可选地,所述注入模块具体用于:
[0025]将距离被注入service最近路径的适配器进行初始化与注入。
[0026]可选地,所述注入模块具体用于:
[0027]按照优先级顺序将优选级最高的适配器进行初始化与注入。
[0028]可选地,所述程序加载模块具体用于:
[0029]通过spring的Iazyload对程序进行懒加载。
[0030]本发明所提供的策略加载与注入的方法及装置,通过接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文;对程序进行加载,并初始化响应的策略注入工厂;调用策略注入工厂对配置范围内的适配器实现类进行寻址排序;从适配器中选择满足预设条件的适配器进行初始化与注入。本发明所提供的策略加载与注入的方法及装置,能够根据需要启动对应模块,并在运行时通过策略加载运行,从而支持不同客户的个性化业务需求。本申请能够真正统一产品版本,原子化各种业务实现模式。
【附图说明】
[0031]为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]图1为本发明所提供的策略加载与注入的方法的一种【具体实施方式】的流程图;
[0033]图2为本发明所提供的策略加载与注入的方法的另一种【具体实施方式】的流程图;
[0034]图3本为发明所提供的模块设计示意图;
[0035]图4为本发明实施例提供的策略加载与注入的装置的结构框图。
【具体实施方式】
[0036]为了使本技术领域的人员更好地理解本发明方案,下面结合附图和【具体实施方式】对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0037]本发明所提供的策略加载与注入的方法的一种【具体实施方式】的流程图如图1所示,该方法包括:
[0038]步骤SlOl:接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文;
[0039]步骤S102:对程序进行加载,并初始化响应的策略注入工厂;
[0040]步骤S103:调用所述策略注入工厂对配置范围内的适配器实现类进行寻址排序;
[0041]步骤S104:从适配器中选择满足预设条件的适配器进行初始化与注入。
[0042]本发明所提供的策略加载与注入的方法及装置,通过接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文;对程序进行加载,并初始化响应的策略注入工厂;调用策略注入工厂对配置范围内的适配器实现类进行寻址排序;从适配器中选择满足预设条件的适配器进行初始化与注入。本发明所提供的策略加载与注入的方法及装置,能够根据需要启动对应模块,并在运行时通过策略加载运行,从而支持不同客户的个性化业务需求。本申请能够真正统一产品版本,原子化各种业务实现模式。本申请为客户自行扩展提供空间,客户可以根据自己的特殊需要对产品进行一定的增量扩展。
[0043]需要指出的是,本发明所提供的策略加载与注入的方法中,策略注入工厂为按照不同模块以及适配器层级定义规则定义的寻址算法,满足所述预设条件的适配器优先被注入。
[0044]具体地,本实施例中可以采用就近注入策略,按照公司模块及适配器层级定义规则定义寻址算法,距离被注入service最近路径的适配器实现优先被注入。
[0045]本发明所提供的策略加载与注入的方法的另一种【具体实施方式】的流程图如图2所示,该方法包括:
[0046]步骤S201:接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文;
[0047]步骤S202:对程序进行加载,并初始化响应的策略注入工厂;
[0048]步骤S203:调用所述策略注入工厂对配置范围内的适配器实现类进行寻址排序;
[0049]步骤S204:将距离被注入service最近路径的适配器进行初始化与注入。
[0050]本实施例中实现的注入策略为就近注入,当然,本发明还为其他注入策略的实现提供了预留扩展,可以根据实际需要实现其他规则的注入策略。如可按照优先级顺序将优先级最高的适配器进行初始化与注入。
[0051]在上述任一实施例的基础上,本发明所提供的策略加载与注入的方法中,对程序进行加载的过程可以具体为:
[0052]通过spring的Iazyload对程序进行懒加载。当然,也可以采用直接加载的方式,这均不影响本发明的实现。
[0053]下面对本发明所提供的策略加载与注入的方法的具体实施过程进行进一步详细阐述。
[0054]如图3本发明所提供的模块设计示意图所示,模块设计人员按照业务功能需要,定义响应的业务模块功能及柜台适配接口。开发人员根据不同的柜台厂商编写不同的适配器实现类,且在实现过程中各个实现完全独立,完全不需关心柜台厂商的合作、竞争关系。
[0055]在功能实现时,开发人员直接使用spring原声注解OAutowired进行接口注入。
[0056]本实施例中,策略注入工厂采用就近注入策略,即按照公司模块及适配器层级定义规则定义寻址算法,距离被注入service最近路径的适配器实现优先被注入。
[0057]其中,适配器范围通过assembly进行配置,只有包含在assembly配置中的适配器模块才会进行就近策略注入排序。
[0058]在实现过程中,程序通过spring的Iazyload进行懒加载,在web容器启动时,按需加载适配器配置文件并载入适配器上下文,初始化响应的策略工厂。
[0059]当程序首次访问时,根据Mutowired注入需要,调用注入策略工厂对配置范围内的适配器实现类进行寻址排序,并将最近距离的适配器进行初始化和注入,完成功能服务。
[0060]下面对本发明实施例提供的策略加载与注入的装置进行介绍,下文描述的策略加载与注入的装置与上文描述的策略加载与注入的方法可相互对应参照。
[0061]图4为本发明实施例提供的策略加载与注入的装置的结构框图,参照图4策略加载与注入的装置可以包括:
[0062]指令接收模块100,用于接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文;
[0063]程序加载模块200,用于对程序进行加载,并初始化响应的策略注入工厂;
[0064]寻址排序模块300,用于调用所述策略注入工厂对配置范围内的适配器实现类进行寻址排序;
[0065]注入模块400,用于从适配器中选择满足预设条件的适配器进行初始化与注入。
[0066]其中,上述策略注入工厂为按照不同模块以及适配器层级定义规则定义的寻址算法,满足所述预设条件的适配器优先被注入。
[0067]作为一种【具体实施方式】,本发明所提供的策略加载与注入的装置中注入模块可以具体用于:
[0068]将距离被注入service最近路径的适配器进行初始化与注入。
[0069]作为一种【具体实施方式】,本发明所提供的策略加载与注入的装置中注入模块具体用于:
[0070]按照优先级顺序将优选级最高的适配器进行初始化与注入。
[0071]上述任一实施例的基础上,本发明所提供的策略加载与注入的装置中程序加载模块可具体用于:
[0072]通过spring的Iazyload对程序进行懒加载。
[0073]本发明所提供的策略加载与注入的方法及装置,通过接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文;对程序进行加载,并初始化响应的策略注入工厂;调用策略注入工厂对配置范围内的适配器实现类进行寻址排序;从适配器中选择满足预设条件的适配器进行初始化与注入。
[0074]本发明所提供的策略加载与注入的方法及装置,在面向服务的web产品中,通过策略注入的方式实现web产品统一版本;并且通过扩展优先覆盖的策略支持产品的自定义扩展。
[0075]与现有技术相比,本申请具有如下技术优点:
[0076](I)在现有springmvc框架上扩展,不带来新的学习成本,对运行容器无依赖;
[0077](2)真正统一版本,所有客户发布相同的程序包,降低维护和管理成本;
[0078](3)大幅减少差异化需求带来的配置参数,降低了运维管理成本;
[0079](4)加载注入策略可根据需要进行不同扩展,适用各种运行时情况。
[0080]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0081]专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0082]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(R0M)、电可编程R0M、电可擦除可编程R0M、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0083]以上对本发明所提供的策略加载与注入的方法以及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
【主权项】
1.一种策略加载与注入的方法,其特征在于,包括: 接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文; 对程序进行加载,并初始化响应的策略注入工厂; 调用所述策略注入工厂对配置范围内的适配器实现类进行寻址排序; 从适配器中选择满足预设条件的适配器进行初始化与注入。2.如权利要求1所述的策略加载与注入的方法,其特征在于,所述策略注入工厂为按照不同模块以及适配器层级定义规则定义的寻址算法,满足所述预设条件的适配器优先被注入。3.如权利要求2所述的策略加载与注入的方法,其特征在于,所述从适配器中选择满足预设条件的适配器进行初始化与注入包括: 将距离被注入service最近路径的适配器进行初始化与注入。4.如权利要求2所述的策略加载与注入的方法,其特征在于,所述从适配器中选择满足预设条件的适配器进行初始化与注入包括: 按照优先级顺序将优先级最高的适配器进行初始化与注入。5.如权利要求1至4任一项所述的策略加载与注入的方法,其特征在于,所述对程序进行加载包括: 通过spring的Iazyload对程序进行懒加载。6.一种策略加载与注入的装置,其特征在于,包括: 指令接收模块,用于接收web容器启动的指令,按需加载适配器配置文件并载入适配器上下文; 程序加载模块,用于对程序进行加载,并初始化响应的策略注入工厂; 寻址排序模块,用于调用所述策略注入工厂对配置范围内的适配器实现类进行寻址排序; 注入模块,用于从适配器中选择满足预设条件的适配器进行初始化与注入。7.如权利要求6所述的策略加载与注入的装置,其特征在于,所述策略注入工厂为按照不同模块以及适配器层级定义规则定义的寻址算法,满足所述预设条件的适配器优先被注入。8.如权利要求7所述的策略加载与注入的装置,其特征在于,所述注入模块具体用于: 将距离被注入service最近路径的适配器进行初始化与注入。9.如权利要求7所述的策略加载与注入的装置,其特征在于,所述注入模块具体用于: 按照优先级顺序将优选级最高的适配器进行初始化与注入。10.如权利要求6至9任一项所述的策略加载与注入的装置,其特征在于,所述程序加载模块具体用于: 通过spring的Iazyload对程序进行懒加载。
【文档编号】G06F9/445GK106095508SQ201610439123
【公开日】2016年11月9日
【申请日】2016年6月17日
【发明人】孔德勇, 邹舟
【申请人】杭州财人汇网络股份有限公司