一种属性加载方法及系统技术方案

技术编号:15400493 阅读:119 留言:0更新日期:2017-05-24 10:19
本发明专利技术提出了一种属性加载方法及系统,该属性加载方法包括如下步骤:抽象属性值来源,如果是动态属性来源,则执行第二步;如果是静态属性来源,则判断本地是否已经存在该属性值,如果不存在,则执行第三步;定时对属性值对应的属性文件进行状态检查,如果属性文件与历史记录对比没有修改,则返回第一步,如果属性文件与历史记录对比有修改,则执行第三步;对属性文件的数据类型按照强制化约定进行转换;加载转换后的属性文件。本发明专利技术的属性加载方法既能实现动态属性的便利配置又不需要大量的代码编写,能够在提高应用便捷性的同时降低复杂度和成本。本发明专利技术可在运行期动态更新属性值,也可以加载静态属性,无须改动代码就完成动态到静态的替换。

Attribute loading method and system

The invention provides a system and a method of loading the property attribute, loading method comprises the following steps: Abstract attribute value source, if it is a dynamic attribute source, executing step second; if it is a static attribute source, then determine whether there has been the local property values, if it does not exist, the implementation of third steps; the timing of the property the value attribute file corresponding to state examination, if the attribute file and historical record comparison is not modified, it returns the first step, if the attribute file and record comparison is modified, the implementation of third steps; the attribute file data types in accordance with the compulsory agreed conversion; attribute file loading after conversion. The attribute loading method of the invention not only can realize the convenient disposition of the dynamic attribute, but also does not need a large amount of code writing, and can reduce the complexity and the cost while improving the convenience of the application. The invention can dynamically update attribute values during the run-time, and can also load static attributes without changing the code to complete the dynamic to static replacement.

【技术实现步骤摘要】
一种属性加载方法及系统
本专利技术涉及JAVA应用开发
,具体涉及一种能够将外部系统对属性文件的更新需要及时反映出来的属性加载方法及系统。
技术介绍
在利用JAVA技术开发的系统中,当应用系统的属性设置为可配置时,该属性的值被写入属性文件/配置文件中,在该属性文件/配置文件中这些属性的值可以进行更改,因此这些属性称为动态属性。现实系统中,一个系统内部的属性文件很可能是由外部系统维护的,因此外部系统对属性文件的更新需要及时反映出来,这就是动态属性的需求。在现有常规的属性文件开发中,一般有两种模式,一是静态模式,即使用Spring的PropertyPlaceholderConfigurer技术一次性加载文件,并在需要的类中以传统的“$属性Key”方式注入;另一种模式是动态模式,即开发者自己实现属性文件管理器,以代码的方式在需要调用的地方进行调用。对于前一种模式,优点是方便,不需要开发人员手工编码,但无法达到动态改变属性值的目的;而后一种模式由于是代码级的随用随调,虽然能实现动态功能,但会带来大量的代码编写,提高了复杂度和成本。因此,寻找一种既能便利配置又不需要大量的代码编写的实现属性文件及时更新的属性加载方法是一个亟需解决的问题。
技术实现思路
为了克服上述现有技术中存在的缺陷,本专利技术的目的是提供一种动态属性加载方法及系统,该方法既能实现动态属性的便利配置又不需要大量的代码编写,降低了复杂度和成本。为了实现本专利技术的上述目的,根据本专利技术的第一个方面,本专利技术提供了一种动态属性加载方法,包括如下步骤:S1:抽象属性值来源,其中所述抽象属性值来源是判断所述属性值是动态属性来源还是静态属性来源,如果是动态属性来源,则执行步骤S2;如果是静态属性来源,则判断本地是否已经存在所述属性值,如果不存在,则执行步骤S3;S2:定时对所述属性值对应的属性文件进行状态检查,如果属性文件与历史记录对比没有修改,则返回步骤S1,如果属性文件与历史记录对比有修改,则执行步骤S3;S3:对所述属性文件的数据类型按照强制化约定进行转换;S4:加载所述转换后的属性文件。本专利技术的动态属性加载方法既能实现动态属性和静态属性的便利配置又不需要大量的代码编写,能够在提高应用便捷性的同时降低复杂度和成本。本专利技术无论在开发中需要动态属性还是静态属性,都可以使用同样的配置和代码编写方式进行,保持了项目组的开发规范的统一。在本专利技术的一种优选实施例中,在步骤S1中,对所述属性值来源进行定时检查。在本专利技术的另一种优选实施例中,所述方法还包括通过任务执行器ScheduledExecutorFactoryBean设置心跳周期,如果所述心跳周期到了而所述属性文件未修改则不再重新加载。本专利技术对属性文件来源进行定时检查并设置心跳周期,从而达到动态属性的目标。在本专利技术的一种优选实施例中,通过属性文件的修改状态检查器PropertyFilesModificationStateChceker对所述属性文件进行状态检查。本专利技术的属性文件如果和上次的历史记录对比没有修改则不需要加载属性文件,从而降低对资源的消耗。在本专利技术的另一种优选实施例中,所述属性文件的数据类型的强制化约定为:在JDK的7种数据类型中,除字符属性数据类型StringPropertyDataType之外的数据类型都加上同步锁,日期属性数据类型DatePropertyDataType需要在配置文件中注入日期转换格式Pattern;其中所述JDK的7种数据类型包括布尔属性数据类型BooleanPropertyDataType、日期属性数据类型DataPropertyDataType、整型属性数据类型IntPropertyDataType、浮点属性数据类型FloatPropertyDataType、双精度浮点属性数据类型DoublePropertyDataType、长整型属性数据类型LongPropertyDataType、字符属性数据类型StringPropertyDataType。本专利技术同时对应于JDK的7种级别数据类型做出的属性数据类型强制化约定能对属性值进行强制类型检查,可满足任何的属性需求场景,能够提高后台代码运行的安全性。在本专利技术的一种优选实施例中,通过默认动态属性来源DefaultDynamicPropertySource实现属性文件加载。在本专利技术的另一种优选实施例中,加载属性文件的路径是当前系统中的类地址classpath或者任意网络可以连通道的物理地址。在本专利技术的再一种优选实施例中,具体的属性文件加载方法为:情况1,动态属性文件默认情况下的目录是当前系统的类路径classpath,由Spring的类路径来源ClassPathResource进行属性文件加载;情况2,如果不是情况1,动态属性文件需要另外指定目录,则通过系统属性文件夹设置系统属性值,并设置系统属性,则从系统属性中获取动态属性文件的目录,由Spring的文件系统资源类FileSystemResource进行属性文件加载;情况3,如果不是情况1也不是情况2,但系统已经设置了默认动态属性来源,则从默认动态属性来源中获取动态属性文件的目录,由Spring的文件系统资源类FileSystemResource进行属性文件加载;;情况4,如果不是情况1、不是情况2也不是情况3,则认为动态属性文件在当前类路径classpath或者网络路径webpath目录下,则与情况1的属性文件加载方法相同;情况5,如果系统确认设置的属性目录是存在的,那么将调用类加载器Classloader进行处理,加载属性文件。本专利技术当前要加载的属性文件的路径可以是当前系统中的类路径classpath,也可以是任意网络可以连通道的物理地址,这样能够提高兼容性。在本专利技术的一种优选实施例中,在步骤S1之前可以具有以下步骤:设置动态属性的默认值。本专利技术通过对属性值设置默认值,使动态属性具有高的容错性。为了实现本专利技术的上述目的,根据本专利技术的第一个方面,本专利技术提供了一种属性加载系统,包括抽象属性值来源模块,用于抽象属性值来源,其中所述抽象属性值来源是判断所述属性值是动态属性来源还是静态属性来源,如果是动态属性来源,则执行属性文件状态检查模块;如果是静态属性来源,则判断本地是否已经存在所述属性值,如果不存在,则执行数据类型强制转换模块;属性文件状态检查模块,用于定时对所述属性值对应的属性文件进行状态检查,如果属性文件与历史记录对比没有修改,则返回所述抽象属性值来源模块,如果属性文件与历史记录对比有修改,则执行所述数据类型强制转换模块;数据类型强制转换模块,用于对所述属性文件的数据类型按照强制化约定进行转换;以及属性文件加载模块,用于加载所述转换后的属性文件。本专利技术的属性加载系统既能实现动态属性的配置也能实现静态属性的配置,能够在提高应用便捷性的同时降低复杂度和成本。本专利技术的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。附图说明本专利技术的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:图1是本专利技术属性加载方法的流程图;图2是本专利技术一种优选实施例中的配置案例;图3是本专利技术属性加载系统的结构示意图。具体实施本文档来自技高网...
一种属性加载方法及系统

【技术保护点】
一种属性加载方法,其特征在于,包括如下步骤:S1:抽象属性值来源,其中所述抽象属性值来源是判断所述属性值是动态属性来源还是静态属性来源,如果是动态属性来源,则执行步骤S2;如果是静态属性来源,则判断本地是否已经存在所述属性值,如果存在,则退出,如果不存在,则执行步骤S3;S2:定时对所述属性值对应的属性文件进行状态检查,如果属性文件与历史记录对比没有修改,则返回步骤S1,如果属性文件与历史记录对比有修改,则执行步骤S3;S3:对所述属性文件的数据类型按照强制化约定进行转换;S4:加载所述转换后的属性文件。

【技术特征摘要】
1.一种属性加载方法,其特征在于,包括如下步骤:S1:抽象属性值来源,其中所述抽象属性值来源是判断所述属性值是动态属性来源还是静态属性来源,如果是动态属性来源,则执行步骤S2;如果是静态属性来源,则判断本地是否已经存在所述属性值,如果存在,则退出,如果不存在,则执行步骤S3;S2:定时对所述属性值对应的属性文件进行状态检查,如果属性文件与历史记录对比没有修改,则返回步骤S1,如果属性文件与历史记录对比有修改,则执行步骤S3;S3:对所述属性文件的数据类型按照强制化约定进行转换;S4:加载所述转换后的属性文件。2.如权利要求1所述的属性加载方法,其特征在于:在步骤S1中,对所述属性值来源进行定时检查。3.如权利要求1所述的属性加载方法,其特征在于:所述方法还包括通过任务执行器ScheduledExecutorFactoryBean设置心跳周期,如果所述心跳周期到了而所述属性文件未修改则不再重新加载。4.如权利要求1所述的属性加载方法,其特征在于:通过属性文件的修改状态检查器PropertyFilesModificationStateChceker对所述属性文件进行状态检查。5.如权利要求1所述的属性加载方法,其特征在于:所述属性文件的数据类型的强制化约定为:在JDK的7种数据类型中,除字符属性数据类型StringPropertyDataType之外的数据类型都加上同步锁,日期属性数据类型DatePropertyDataType需要在配置文件中注入日期转换格式Pattern;其中所述JDK的7种数据类型包括布尔属性数据类型BooleanPropertyDataType、日期属性数据类型DataPropertyDataType、整型属性数据类型IntPropertyDataType、浮点属性数据类型FloatPropertyDataType、双精度浮点属性数据类型DoublePropertyDataType、长整型属性数据类型LongPropertyDataType、字符属性数据类型StringPropertyDataType。6.如权利要求1所述的属性加载方法,其特征在于:通过默认动态属性来源DefaultDynamicPropertySource实现属性文件加载。7.如权利要求1或6所述的属性加载方法,其特征在于:加载属性文件的路径是当前系统中的类地址classpath或者任意网络可以连通道的物理地址。8.如权利要求1或6所述的属性加载方法,其特征在于:具体的属性文件加载方法为:情况1,动态属性文件默认情况下的目录是当前系统的类路径classpath,由Spring的类路径来源ClassPathResource进行属性文件加载;情况2,如果不是情况1,动态属性文件需要...

【专利技术属性】
技术研发人员:于建军
申请(专利权)人:重庆新媒农信科技有限公司
类型:发明
国别省市:重庆,50

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

1