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:抽象属性值来源,其中所述抽象属性值来源是判 ...
【技术保护点】
一种属性加载方法,其特征在于,包括如下步骤: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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。