CN107122203B - 一种配置文件的设置方法及装置 - Google Patents
一种配置文件的设置方法及装置 Download PDFInfo
- Publication number
- CN107122203B CN107122203B CN201710166730.2A CN201710166730A CN107122203B CN 107122203 B CN107122203 B CN 107122203B CN 201710166730 A CN201710166730 A CN 201710166730A CN 107122203 B CN107122203 B CN 107122203B
- Authority
- CN
- China
- Prior art keywords
- configuration
- setting
- function
- configuration information
- file
- 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/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
Abstract
本发明提供一种配置文件的设置方法及装置,其中,所述方法包括:通过设置函数的链式调用将配置文件中的配置信息写入配置对象中。本发明提供的一种配置文件的设置方法及装置,通过采用链式调用设置函数对配置对象进行配置信息的设置,配置过程简单、代码清晰且后期维护方便,能够提高开发人员配置的效率,降低开发成本。
Description
技术领域
本发明涉及软件开发领域,更具体地,涉及一种配置文件的设置方法及装置。
背景技术
在软件开发的过程中,当开发者需要使用一个新的组件或者工具的时候,首先需要对该组件或工具进行配置然后再使用。在开发阶段需要进行的配置,一般是环境配置和变量配置,比如数据库连接信息、程序结构和程序样式等。
现有技术中对组件或工具进行配置的过程如下:首先通过配置类构造函数创建出一个配置对象的实例,然后再多次调用这个配置对象的各个设置函数对这个配置对象进行相应地配置项设置。在此过程中,会多次调用该配置对象,还需要将这个配置对象实例维护到内存中进行保存。
现有技术存在如下问题:多次调用该配置对象会造成代码可读性差,对哪些配置项进行了设置以及还需要对哪些配置项进行设置都需要手动排查,并且后期需要更改配置时,技术人员需要手动查找要修改的配置项的位置,造成后期维护困难。尤其当组件或者工具非常庞大的时候,开发人员往往需要进行大量的配置工作,整个配置的过程会异常地繁琐和复杂,开发人员编写配置文件的效率非常低,进而导致整个软件开发的成本较高。
发明内容
为了能够克服或者至少部分地解决现有技术中存在的代码可读性差、后期维护困难、配置过程繁琐复杂、开发效率低且开发成本高的问题,本发明提供一种配置文件的设置方法及装置。
根据本发明的一个方面,提供一种配置文件的设置方法,包括:
通过设置函数的链式调用将配置文件中的配置信息写入配置对象中。
其中,所述通过设置函数的链式调用将配置文件中的配置信息写入配置对象中的步骤之前还包括:
创建一个配置对象或者调用一个配置对象。
其中,所述创建一个配置对象包括:采用单例模式创建一个单例配置对象;相应地,所述通过设置函数的链式调用将配置文件中的配置信息写入配置对象中包括:
通过设置函数的链式调用将配置文件中的配置信息写入所述单例配置对象中。
其中,所述通过设置函数的链式调用将配置文件中的配置信息写入配置对象中包括:
S1,调用第一设置函数对所述配置对象进行第一项配置信息的设置,在设置完成后,返回第一次设置完成的所述配置对象;
S2,K分别取值为从2到N顺序执行下述步骤:调用第K设置函数对K-1次设置完成的所述配置对象进行第K项配置信息的设置,在设置完成后,返回第K次设置完成的所述配置对象,其中,N为配置信息的总项数;
S3,完成所有配置信息的设置后,通过结束函数返回最终设置完成的所述配置对象。
其中,所述采用单例模式创建一个单例配置对象包括:
定义一个全局静态变量;
定义一个全局静态函数,其中,在所述全局静态函数的内部,首先判断所述全局静态变量是否为空,若为空,则进入同步代码块对所述全局静态变量进行第二次判断是否为空;若为空,则调用配置类的构造函数创建出一个配置类对象的实例,并将所述配置类对象的实例赋给所述全局静态变量,返回所述全局静态变量。
其中,所述创建一个配置对象或者调用一个现有配置对象的步骤之前还包括:
从后台服务器获取配置文件,解析所述配置文件从而获取所述配置文件中的配置信息。
其中,所述解析所述配置文件从而获取所述配置文件中的配置信息的步骤之后还包括:
将所述配置信息存储至本地缓存文件;
当无法从后台服务器获取配置文件时,获取本地缓存文件中所存储的上一次通过解析所获取的配置信息。
其中,所述配置信息包括配置项、配置参数和配置文件中所保存的数据中的一个或者多个。
根据本发明的另一个方面,提供一种配置信息的设置装置,包括:设置模块,用于通过设置函数的链式调用将配置文件中的配置信息写入配置对象中。
其中,所述设置模块具体用于:
调用第一设置函数对所述配置对象进行第一项配置信息的设置,在设置完成后,返回第一次设置完成的所述配置对象;
K分别取值为从2到N顺序执行下述步骤:调用第K设置函数对K-1次设置完成的所述配置对象进行第K项配置信息的设置,在设置完成后,返回第K次设置完成的所述配置对象,其中,N为配置信息的总项数;
完成所有配置信息的设置后,通过结束函数返回最终设置完成的所述配置对象。
本发明提供的一种配置文件的设置方法及装置,通过采用链式调用设置函数对配置对象进行配置信息的设置,配置过程简单、代码清晰且后期维护方便,能够提高开发人员配置的效率,降低开发成本。
附图说明
图1为本发明一实施例提供的一种配置文件的设置方法的流程示意图;
图2为本发明另一实施例提供的一种配置文件的设置方法的流程示意图;
图3为本发明另一实施例提供的基于图1中步骤S12所述通过设置函数的链式调用将配置文件中的配置信息写入所述配置对象中的流程示意图;
图4为本发明另一实例提供的基于图2中步骤S21所述采用单例模式创建一个单例配置对象的流程示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明一实施例提供一种配置文件的设置方法,包括:
通过设置函数的链式调用将配置文件中的配置信息写入配置对象中。
在程序开发过程中,开发人员要使用某个组件或工具时,需要根据组件或工具提供的配置文件中的配置项或配置参数对组件或工具进行相应地配置后才能够开始使用。配置文件中保存的数据对程序的执行有指导性作用。因此,如何快速地将配置文件中的配置信息设置好,对于提高程序的开发效率至关重要。
现有技术中每设置一项配置信息的设置过程都需要调用对应的设置函数,采用的是Object.method()形式的调用,当要设置的配置信息的项数多达几十上百个时,代码中就会出现相应数目的Object.method()形式的调用,采用这种形式的调用方法进行配置设置无疑是非常繁琐的。
具体地,链式调用指的是如下调用形式:
Object.method1().method2().method3().method4()……;
一般的设置函数是个无返回值的void方法,只是单纯的去执行设置逻辑,但是链式调用中的每个设置函数除了执行设置逻辑外,还在设置完成后,将这个配置类对象本身返回了,所以Object.method()只是一句调用,但是链式调用中的Object.method1()不仅仅是一句调用语句,它本身就是该配置类对象,可以重复地调用方法,即可以在一次设置完成后,再次调用另一个设置函数对已经进行过设置的所述配置类型对象进行再一次地设置,通过在上一次设置完成的配置对象的基础上,调用不同的设置函数来完成所有配置信息的设置,最终实现将所有配置信息写入配置对象中,完成配置过程。采用链式调用可以明显减少代码量,并且对哪些配置信息进行了设置会非常清晰,特别是在配置大型组件或工具时,当需要设置的配置信息的数量很多时,采用链式调用方式能够有效减少代码编写量,提升配置效率。
本发明实施例提供的一种配置文件的设置方法,通过采用链式调用设置函数对配置对象进行配置信息的设置,配置过程简单、代码清晰且非常便于后期维护,能够提高开发人员配置的效率,降低开发成本。
下面以对系统日志进行配置为例来说明本发明实施例的技术方案,通常在系统日志中需要配置如下相关信息:日志开关信息、应用上下文信息、日志标记信息以及日志等级信息等,具体地,可以采用如下代码对上述配置信息进行设置:
通过一系列设置函数的链式调用将日志开关信息true、应用上下文信息、日志标记信息“test”和日志等级信息3,全部写入所述配置对象logConfig中。每调用一个设置函数在设置完成后都会返回logConfig对象本身,因此可以在logConfig.setSwitch(true)的基础上继续调用下一设置函数setContext,直到完成日志开关信息、应用上下文信息、日志标记信息以及日志等级信息等配置信息的设置过程。
如图1所示,为本发明另一实施例提供的一种配置文件的设置方法的流程示意图,包括:
S11,创建一个配置对象或者调用一个配置对象;
S12,通过设置函数的链式调用将配置文件中的配置信息写入配置对象中。
具体地,成员函数使用之前都需要先创建对象,再通过对象调用成员函数。本发明实施例步骤S11中创建一个配置对象前提是已经定义了一个配置类,通过这个配置类的实例化创建一个配置对象,然后调用设置函数将需要设置的配置信息写入,后续服务进程可以调用这个配置类从而完成相应地配置。创建一个配置对象是通过调用配置类的构造函数实现的。或者,存在一个现有配置对象,直接调用即可。
步骤S12在上一个实施例中已经详细阐述,在此不再赘述。
本发明实施例提供的一种配置文件的设置方法,通过采用链式调用设置函数对新创建的或已有的配置对象进行配置信息的设置,配置过程简单、代码清晰,能够提高开发人员配置的效率,降低开发成本。
下面同样以对系统日志进行配置为例来说明本发明实施例的技术方案,具体地,可以采用如下代码实现:
首先,通过日志配置类LogConfig的构造函数LogConfig()实例化一个配置对象logConfig,然后,通过一系列设置函数的链式调用将日志开关信息true、应用上下文信息、日志标记信息“test”和日志等级信息3,全部写入所述配置对象logConfig中并返回配置对象logConfig本身。
或者,采用如下代码对上述配置信息进行设置:
通过日志配置类的构造函数去链式调用一系列的设置函数,因为构造函数会返回创建的对象本身,因此也可以重复调用方法,完成日志开关信息、应用上下文信息、日志标记信息以及日志等级信息等配置信息的设置过程。
如图2所示,为本发明另一实施例提供的一种配置文件的设置方法的流程示意图,包括:
S21,采用单例模式创建一个单例配置对象;
S22,通过设置函数的链式调用将配置文件中的配置信息写入所述单例配置对象中。
具体地,步骤S21中所述单例模式(Singleton模式)可以确保类只有一个实例存在,所述单例配置对象是指唯一的配置类对象的实例。采用单例模式创建一个单例配置对象是指在全局有且仅有一个配置类对象的实例存在,外部调用者可以很方便地找到这个配置类对象,并对这个配置类对象进行调用从而获得相关的配置信息。采用单例模式的优点是由于只通过一个对象进行配置管理,可以减少系统资源开销,并且由于外部调用者每次都获取已经存在的对象,因此可以提高创建速度,同时在任何地方使用此对象都是同一个对象,可以避免多实例创建使用时产生的程序逻辑错误。
采用单例模式创建一个单例配置对象的具体实现方式可以概括为以下步骤:创建一个配置类型的private静态变量;创建一个public静态函数,用于将通过调用配置类的构造函数所创建的唯一实例返回给外部调用者。
步骤S22中所述通过设置函数的链式调用将配置文件中的配置信息写入所述单例配置对象中是指在创建一个单例配置对象后,基于这个单例配置对象,采用链式调用方式将需要进行设置的配置信息设置好,最终返回设置好的所述单例配置对象。每一个设置函数在完成相应的配置信息处理后都会返回所述单例配置对象,这样下一个设置函数就可以基于上一次设置好的单例配置对象来继续进行设置处理了,直至最终完成所有配置信息的设置。
本发明实施例提供的一种配置文件的设置方法,通过采用单例模式创建一个单例配置对象,并通过链式调用的方式完成配置信息的设置过程,使得全局有且仅有一个配置类对象存在,外部调用者可以很方便地找到这个配置类对象并获取相关的配置信息,使得配置过程很方便管理,并且可以避免多实例创建并使用时产生的程序逻辑错误。
下面同样以对系统日志进行配置为例来说明本发明实施例的技术方案。具体地,可以采用如下代码对系统日志中的各种配置信息进行设置:
private static LogConfig instance;
public static LogConfig getInstance(){
//创建唯一配置对象类的实例,并赋给instance
return instance;
}
public LogConfig setContext(Context context){
//处理数据
return instance;
}
LogConfig logConfig=LogConfig().getInstance().setSwitch(true)
.setContext(this)
.setTag(“test”)
.setLevel(3)
.over();
首先采用单例模式创建一个单例配置对象,创建的过程如下:定义一个LogConfig类型的private静态变量instance;然后定义一个public静态函数getInstance(),在这个public静态函数getInstance()的内部通过调用构造函数LogConfig()创建唯一的配置类对象,并赋给private静态变量instance,此时instance即为所创建的唯一的配置类对象的实例,然后通过return语句返回所述instance。然后,通过链式调用的方式将配置信息写入所述单例配置对象instance中。每一个设置函数在完成数据处理后都会返回所述单例配置对象instance,这样下一个设置函数就可以基于上次的instance对象来继续进行设置处理了。
在上述实施例的基础上,如图3所示,为本发明另一实施例提供的基于图1中步骤S12所述通过设置函数的链式调用将配置文件中的配置信息写入配置对象中的流程示意图,包括:
S31,调用第一设置函数对所述配置对象进行第一项配置信息的设置,在设置完成后,返回第一次设置完成的所述配置对象;
S32,K分别取值为从2到N顺序执行下述步骤:调用第K设置函数对K-1次设置完成的所述配置对象进行第K项配置信息的设置,在设置完成后,返回第K次设置完成的所述配置对象,其中,N为配置信息的总项数;
S33,完成所有配置信息的设置后,通过结束函数返回最终设置完成的所述配置对象。
需要说明的是,此处和权利要求中使用的“第一”、“第二”、“第K”等术语仅仅是为了区别不同的描述对象,而并非有意限制任何时间或者空间上的顺序。
具体地,步骤S31中调用第一设置函数对所述配置对象进行第一项配置信息的设置,通过调用第一设置函数,在第一设置函数的内部会通过参数传递的形式将具体的配置信息写入配置对象中,完成设置逻辑,在每次设置完成后通过return语句返回第一次设置好的配置对象。这样当进行步骤S32时,直接继续调用第二设置函数对所述第一次设置好的配置对象进行设置,并返回第二次设置好的配置对象。然后继续调用第三设置函数对所述第二次设置好的配置对象进行设置,……,调用第K设置函数对第K-1次设置好的所述配置对象进行第K项配置信息的设置,……,调用第N设置函数对第N-1次设置好的所述配置对象进行第N项配置信息的设置,并返回第N次设置完成的配置对象。N为配置信息的总项数,根据实际需要进行多少项配置信息的设置而定。下一项配置信息的设置都是基于前一次配置完成的配置对象,就像环形一样的一直设置下去直到所有配置信息设置完成。最后,步骤S33通过调用结束函数将最终设置好的配置对象进行返回。所述结束函数内部仅仅是将最终设置好的配置对象进行返回,而不做其他任何处理,以便于外部服务程序调用最终设置好的配置对象。
同样以对系统日志进行配置为例,上述各步骤可以通过如下代码实现:
首先调用第一设置函数setSwitch对所述配置对象进行日志开关信息的设置,在设置完成后,通过return语句返回第一次设置好的所述配置对象logConfig;然后,调用第二设置函数setContext对第一次设置好的所述配置对象进行应用上下文信息的设置,在设置完成后,返回第二次设置好的所述配置对象logConfig;重复上述步骤,依次对所述配置对象logConfig进行日志标记信息和日志等级信息的设置,最后,通过over()函数返回最终设置好的所述配置对象logConfig。
本发明实施例提供的一种配置文件的设置方法,通过采用链式调用的方式进行配置信息的设置,可以直接在原先配置的基础上进行下一项配置的设置,极大的提高了设置配置的效率,使得代码阅读性更加明朗,更加方便后期对其进行维护和升级。
在上述实例例的基础上,如图4所示,为本发明另一实例提供的基于图2中步骤S21所述采用单例模式创建一个单例配置对象的流程示意图,包括:
S41,定义一个全局静态变量;
S42,定义一个全局静态函数,其中,在所述全局静态函数的内部,首先判断所述全局静态变量是否为空,若为空,则进入同步代码块对所述全局静态变量进行第二次判断是否为空,若为空,则调用配置类的构造函数创建出一个配置类对象的实例,并将所述配置类对象的实例赋给所述全局静态变量,返回所述全局静态变量。
前面已经提及单例模式指的是全局有且仅有一个对象存在,本发明实施例提供一种采用单例模式创建一个单例配置对象的具体方法。具体地,步骤S41中定义一个全局静态变量的目的是使用静态方法对配置对象进行封装使得该配置对象能够在全局任意位置获取到。步骤S42定义了一个全局静态函数,用于创建一个静态访问点,将创建的唯一实例返回给外部调用者,将所述全局静态函数定义为静态的目的是可以在任意其他函数中很方便的获取到该全局静态函数的引用。
为了更清晰地描述本发明实施例所提供的采用单例模式创建一个单例对象的具体方法,结合如下代码进行说明:
在所述全局静态函数的内部,有双重判断和同步代码块,加同步代码块的目的是为了解决线程安全问题,而双重判断是为了解决效率问题。具体思路是首先检查是否已经创建了实例,如果还没有创建,才进行同步,这样就只进行一次同步,从而提高了效率。
具体地,首先判定全局静态变量instance是否为空,通过if(instance==null)来进行判定的。如果instance为空,说明配置对象实例还没有创建,则进行第二次校验,之所以要进行二次校验的目的是为了防止多线程并发从而导致的单例失败,创建了多个实例。
为了防止并发引起单例出现问题,在进入第二次校验处加了一个同步代码块synchronized,被synchronized修饰的代码块同一时间只能有一个线程可以执行,如果有一个线程进入到同步代码块中,另外的线程都不能再进入这样就避免了因为并发从而引起的多个实例的出现。
在同步代码块中再次对instance进行判定,如果进入到同步代码块的线程判定instance依旧是空,也就是if(instance==null)这个判断条件依旧是真的,此时才开始LogConfig真正的实例化操作。
LogConfig实例化操作是通过调用LogConfig的构造函数来进行实例化实现的,具体是通过instance=new LogConfig();的方式来进行实例化,首先,调用配置类的构造函数创建出一个配置类对象的实例,并将所述配置类对象的实例赋给所述全局静态变量instance,实例化完成后将实例化对象instance返回出去。
当再次调用getInstance()时,首先会去判定instance是否为空,由于已经对instance进行实例化了,此时instance不为空,此时直接将原先实例化的instance进行返回,这样调用者就能够快速的获取到需要的LogConfig配置对象了。
本发明实施例提供的一种配置文件的设置方法,通过使用单例模式,确保了整个应用中有且仅有一个配置对象的实例存在,并且通过引入双重判断和同步代码块,避免了因为多线程并非从而导致单例可能被多次实例化的问题,解决了线程安全问题的同时提高了效率。
本发明另一实施例,在上述实施例的基础上,所述创建一个配置对象或者调用一个现有配置对象的步骤之前还包括:
从后台服务器获取配置文件,解析所述配置文件从而获取所述配置信息。
具体地,在开始创建配置对象进行配置过程之前,需要获取配置信息。配置信息存储在配置文件中,配置文件是具有规范化数据格式的变量保存文件,采用的数据格式可以是XML格式、YAML格式或JSON格式等。通常需要将配置文件进行解析从而获得所需要的配置信息。每次系统启动的时候通过网络从后台服务获取配置文件,然后对所述配置文件进行解析得到我们需要的配置信息。然后通过一系列的设置函数将我们解析好的配置信息设置到配置对象中,这样配置文件都是从服务器后台来进行获取的,大大提高了配置文件的动态性。后续如果因为业务需求需要调整配置信息的设置,只需要在后台进行更改后,客户端下次启动的时候就会使用新的配置信息来进行配置了。
本发明实施例提供的一种配置文件的设置方法,通过从后台服务器获取配置信息,能够极大地提高配置过程的动态性和灵活性。
本发明另一实施例,在上述述实施例的基础上,解析所述配置文件从而获取所述配置文件中的配置信息的步骤之后还包括:
将所述配置信息存储至本地缓存文件;
当无法从后台服务器获取配置文件时,获取本地缓存文件中所存储的上一次通过解析所获取的配置信息。
具体地,为了防止网络出现问题或者出现从后台服务器无法获取到配置文件的问题,先将上一次解析正确的配置信息存储至本地缓存文件中,如果通过网络获取配置文件的时候发现无法获取,则获取本地缓存文件中的上一次解析所获取的配置信息,此时就直接使用本地缓存文件中的配置信息来进行配置。
本发明实施例提供的一种配置文件的设置方法,通过获取到的配置信息进行缓存,可以避免从后台服务器无法获取到配置信息时无法完成配置的问题,降低了配置的难度。
本发明另一实施例,在上述实施例的基础上,所述配置信息包括配置项、配置参数和配置文件中所保存的数据中的一个或者多个。
具体地,配置项保存了系统和项目的相关配置,软件、硬件、文档等各类信息每发生一次变更,都要更新配置项,以便于更好的维护系统。每一个网络应用或网络服务所对应的应用程序中都会用到一些环境变量,这些环境变量的具体数值可能随应用程序的运行环境改变而发生变化,为此,通常将这些环境变量存储在配置文件中,当应用程序启动时,通过加载该配置文件来获取环境变量的具体数值,环境变量即是一种配置参数。目前包括软件系统和硬件系统在内的各类系统通常使用配置文件来记录关于其配置的信息或者参数,配置文件中所保存的数据即为关于其配置的信息或参数。本发明实施例中的配置信息包括配置项、配置参数、配置文件中所保存的数据中的一个或多个。
本发明另一实施例提供一种配置信息的设置装置,包括:设置模块,用于通过一系列设置函数的链式调用将配置信息写入所述配置对象中。
具体地,设置模块采用的链式调用的具体形式为:
Object.method1().method2().method3().method4()……
一般的设置函数是个无返回值的void方法,只是单纯的去执行设置逻辑,但是链式调用中的每个设置函数除了执行设置逻辑外,还在设置完成后,将这个配置类对象本身返回了,即链式调用中的Object.method1()不仅仅是一句调用语句,它本身就是该配置类对象,可以重复地调用方法,即可以在一次设置完成后,再次调用另一个设置函数对已经进行过设置的所述配置类型对象进行再一次地设置,通过重复地调用不同的设置函数完成所有的配置信息的设置。采用链式调用可以明显减少代码量,并且对哪些配置信息进行了设置会非常清晰,特别是在配置大型组件或工具时,采用链式调用方式能够有效减少代码编写量,提升配置效率。
本发明实施例提供的一种配置信息的设置装置,设置模块通过采用链式调用设置函数对配置对象进行配置信息的设置,配置过程简单、代码清晰且后期维护方便,能够提高开发人员配置的效率,降低开发成本。
本发明又一实施例,在上述实施例的基础上,所述设置模块具体用于:
调用第一设置函数对所述配置对象进行第一项配置信息的设置,在设置完成后,返回第一次设置完成的所述配置对象;
K分别取值为从2到N顺序执行下述步骤:调用第K设置函数对K-1次设置完成的所述配置对象进行第K项配置信息的设置,在设置完成后,返回第K次设置完成的所述配置对象,其中,N为配置信息的总项数;
完成所有配置信息的设置后,通过结束函数返回最终设置完成的所述配置对象。
具体地,设置模块调用第一设置函数对所述配置对象进行第一项配置信息的设置,通过调用第一设置函数,在第一设置函数的内部会通过参数传递的形式将具体的配置信息写入配置对象中,完成设置逻辑,在每次设置完成后通过return语句返回第一次设置好的配置对象。设置模块直接继续调用第二设置函数对所述第一次设置好的配置对象进行设置,并返回第二次设置好的配置对象。然后继续调用第三设置函数对所述第二次设置好的配置对象进行设置,……,调用第K设置函数对第K-1次设置好的所述配置对象进行第K项配置信息的设置,……,调用第N设置函数对第N-1次设置好的所述配置对象进行第N项配置信息的设置,并返回第N次设置完成的配置对象。N为配置信息的总项数,根据实际需要进行多少项配置信息的设置而定。下一项配置信息的设置都是基于前一次配置完成的配置对象,就像环形一样的一直设置下去直到所有配置信息设置完成。最后,设置模块通过调用结束函数将最终设置好的配置对象进行返回。所述自定义的结束函数内部仅仅是将最终设置好的配置对象进行返回,而不做其他任何处理。
本发明实施例提供的一种配置信息的设置装置,设置模块通过采用链式调用的方式进行配置信息的设置,可以直接在原先配置的基础上进行下一项配置的设置,极大的提高了设置配置的效率,方便后期对其进行维护和升级。
本发明上述各实施例提供的配置文件的设置方法及装置,通过采用单例模式创建配置对象,使得全局有且仅有一个配置类对象存在,外部调用者可以很方便地找到这个配置类对象并获取相关的配置信息,使得配置过程很方便管理,并且采用链式调用设置函数对配置对象进行配置信息的设置,配置过程简单、代码清晰且后期维护方便,能够提高开发人员配置的效率,降低开发成本。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (5)
1.一种配置文件的设置方法,其特征在于,包括:
通过设置函数的链式调用将配置文件中的配置信息写入配置对象中;
其中,所述通过设置函数的链式调用将配置文件中的配置信息写入配置对象中的步骤之前还包括:
创建一个配置对象或者调用一个配置对象;
其中,所述创建一个配置对象包括:
采用单例模式创建一个单例配置对象;相应地,
所述通过设置函数的链式调用将配置文件中的配置信息写入配置对象中包括:
通过设置函数的链式调用将配置文件中的配置信息写入所述单例配置对象中;
其中,所述采用单例模式创建一个单例配置对象包括:
定义一个全局静态变量;
定义一个全局静态函数,其中,在所述全局静态函数的内部,首先判断所述全局静态变量是否为空,若为空,则进入同步代码块对所述全局静态变量进行第二次判断是否为空;若为空,则调用配置类的构造函数创建出一个配置类对象的实例,并将所述配置类对象的实例赋给所述全局静态变量,返回所述全局静态变量;
其中,所述通过设置函数的链式调用将配置文件中的配置信息写入配置对象中包括:
S1,调用第一设置函数对所述配置对象进行第一项配置信息的设置,在设置完成后,返回第一次设置完成的所述配置对象;
S2,K分别取值为从2到N顺序执行下述步骤:调用第K设置函数对K-1次设置完成的所述配置对象进行第K项配置信息的设置,在设置完成后,返回第K次设置完成的所述配置对象,其中,N为配置信息的总项数;
S3,完成所有配置信息的设置后,通过结束函数返回最终设置完成的所述配置对象。
2.根据权利要求1所述的配置文件的设置方法,其特征在于,所述创建一个配置对象或者调用一个现有配置对象的步骤之前还包括:
从后台服务器获取配置文件,解析所述配置文件从而获取所述配置文件中的配置信息。
3.根据权利要求2所述的配置文件的设置方法,其特征在于,所述解析所述配置文件从而获取所述配置文件中的配置信息的步骤之后还包括:
将所述配置信息存储至本地缓存文件;
当无法从后台服务器获取配置文件时,获取本地缓存文件中所存储的上一次通过解析所获取的配置信息。
4.根据权利要求1所述的配置文件的设置方法,其特征在于,所述配置信息包括配置项、配置参数和配置文件中所保存的数据中的一个或者多个。
5.一种配置文件的设置装置,其特征在于,包括:
设置模块,用于通过设置函数的链式调用将配置文件中的配置信息写入配置对象中;
其中,还包括:
创建模块,用于创建一个配置对象或者调用一个配置对象;
其中,所述创建模块具体用于:
采用单例模式创建一个单例配置对象;相应地,
所述设置模块具体用于:
通过设置函数的链式调用将配置文件中的配置信息写入所述单例配置对象中;
其中,所述创建模块具体用于:
定义一个全局静态变量;
定义一个全局静态函数,其中,在所述全局静态函数的内部,首先判断所述全局静态变量是否为空,若为空,则进入同步代码块对所述全局静态变量进行第二次判断是否为空;若为空,则调用配置类的构造函数创建出一个配置类对象的实例,并将所述配置类对象的实例赋给所述全局静态变量,返回所述全局静态变量;
其中,所述设置模块具体用于:
调用第一设置函数对所述配置对象进行第一项配置信息的设置,在设置完成后,返回第一次设置完成的所述配置对象;
K分别取值为从2到N顺序执行下述步骤:调用第K设置函数对K-1次设置完成的所述配置对象进行第K项配置信息的设置,在设置完成后,返回第K次设置完成的所述配置对象,其中,N为配置信息的总项数;
完成所有配置信息的设置后,通过结束函数返回最终设置完成的所述配置对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710166730.2A CN107122203B (zh) | 2017-03-20 | 2017-03-20 | 一种配置文件的设置方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710166730.2A CN107122203B (zh) | 2017-03-20 | 2017-03-20 | 一种配置文件的设置方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107122203A CN107122203A (zh) | 2017-09-01 |
CN107122203B true CN107122203B (zh) | 2021-01-01 |
Family
ID=59717285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710166730.2A Active CN107122203B (zh) | 2017-03-20 | 2017-03-20 | 一种配置文件的设置方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122203B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324373B (zh) * | 2018-12-13 | 2023-12-05 | 北京奇虎科技有限公司 | 多个工程文件上传代码仓库的方法及装置、计算设备 |
CN112346728B (zh) * | 2020-10-27 | 2023-07-25 | 抖音视界有限公司 | 设备适配方法、装置、设备和计算机可读介质 |
CN114706619A (zh) * | 2020-12-16 | 2022-07-05 | 武汉斗鱼鱼乐网络科技有限公司 | 配置信息的处理方法、装置、电子设备及存储介质 |
CN116009949B (zh) * | 2023-03-28 | 2023-08-29 | 税友软件集团股份有限公司 | 一种数值获取方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446709B (zh) * | 2014-07-29 | 2019-06-21 | 阿里巴巴集团控股有限公司 | 一种Java应用处理方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8811954B1 (en) * | 2005-10-31 | 2014-08-19 | Genband Us Llc | Network domain selection |
US20150023230A1 (en) * | 2013-07-19 | 2015-01-22 | Qualcomm Incorporated | Dual sim dual active subscriber identification module with a single transmit chain and dual or single receive chain |
US20150067146A1 (en) * | 2013-09-04 | 2015-03-05 | AppDynamics, Inc. | Custom correlation of a distributed business transaction |
-
2017
- 2017-03-20 CN CN201710166730.2A patent/CN107122203B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446709B (zh) * | 2014-07-29 | 2019-06-21 | 阿里巴巴集团控股有限公司 | 一种Java应用处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
<Android总结之链式调用(方法链)>;总李写代码;<https://www.cnblogs.com/whoislcj/p/5805921.html>;20160826;1-7 * |
Also Published As
Publication number | Publication date |
---|---|
CN107122203A (zh) | 2017-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109302522B (zh) | 测试方法、装置以及计算机系统和介质 | |
US10360141B2 (en) | Automated application test system | |
CN107122203B (zh) | 一种配置文件的设置方法及装置 | |
US7882492B2 (en) | Intelligent computer program debugger, and system and method for implementing the same | |
US8806437B2 (en) | Automated testing process | |
CN112765023B (zh) | 测试用例生成方法、装置 | |
US11113050B2 (en) | Application architecture generation | |
US20160335079A1 (en) | Zero down-time deployment of new application versions | |
US20210103514A1 (en) | Reusable test cases for identifiable patterns | |
CN104679500B (zh) | 实体类自动生成实现方法及装置 | |
US11537367B1 (en) | Source code conversion from application program interface to policy document | |
CN109614325B (zh) | 一种确定控件属性的方法及装置、电子设备和存储介质 | |
CN111026670B (zh) | 测试用例的生成方法、测试用例的生成装置及存储介质 | |
CN114818565A (zh) | 基于python的仿真环境管理平台、方法、设备及介质 | |
EP3447635A1 (en) | Application architecture generation | |
CN113296758B (zh) | 一种前端组件库构建方法、装置及存储介质 | |
US10275236B2 (en) | Generating related templated files | |
US8930960B2 (en) | Methods and systems for object interpretation within a shared object space | |
US20160170739A1 (en) | Alter application behaviour during runtime | |
CN113031964B (zh) | 一种大数据应用的管理方法、装置、设备及存储介质 | |
US11144435B1 (en) | Test case generation for software development using machine learning | |
CN113220586A (zh) | 一种自动化的接口压力测试执行方法、装置和系统 | |
CN111813633A (zh) | 性能监控方法、装置、设备及可读存储介质 | |
EP1868099A1 (en) | Bug management tool | |
US11036613B1 (en) | Regression analysis for software development and management using machine learning |
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 |