CN103838564B - 一种属性加载方法及系统 - Google Patents

一种属性加载方法及系统 Download PDF

Info

Publication number
CN103838564B
CN103838564B CN201210491384.2A CN201210491384A CN103838564B CN 103838564 B CN103838564 B CN 103838564B CN 201210491384 A CN201210491384 A CN 201210491384A CN 103838564 B CN103838564 B CN 103838564B
Authority
CN
China
Prior art keywords
attribute
file
property
source
situation
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
Application number
CN201210491384.2A
Other languages
English (en)
Other versions
CN103838564A (zh
Inventor
于建军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Singularity Xinyuan International Technology Development (Beijing) Co.,Ltd.
Original Assignee
CHONGQING XINMEI AGRICULTURAL INFORMATION TECHNOLOGY CO LTD
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CHONGQING XINMEI AGRICULTURAL INFORMATION TECHNOLOGY CO LTD filed Critical CHONGQING XINMEI AGRICULTURAL INFORMATION TECHNOLOGY CO LTD
Priority to CN201210491384.2A priority Critical patent/CN103838564B/zh
Publication of CN103838564A publication Critical patent/CN103838564A/zh
Application granted granted Critical
Publication of CN103838564B publication Critical patent/CN103838564B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种属性加载方法及系统
技术领域
本发明涉及JAVA应用开发技术领域,具体涉及一种能够将外部系统对属性文件的更新需要及时反映出来的属性加载方法及系统。
背景技术
在利用JAVA技术开发的系统中,当应用系统的属性设置为可配置时,该属性的值被写入属性文件/配置文件中,在该属性文件/配置文件中这些属性的值可以进行更改,因此这些属性称为动态属性。现实系统中,一个系统内部的属性文件很可能是由外部系统维护的,因此外部系统对属性文件的更新需要及时反映出来,这就是动态属性的需求。
在现有常规的属性文件开发中,一般有两种模式,一是静态模式,即使用Spring的PropertyPlaceholderConfigurer技术一次性加载文件,并在需要的类中以传统的“$属性Key”方式注入;另一种模式是动态模式,即开发者自己实现属性文件管理器,以代码的方式在需要调用的地方进行调用。对于前一种模式,优点是方便,不需要开发人员手工编码,但无法达到动态改变属性值的目的;而后一种模式由于是代码级的随用随调,虽然能实现动态功能,但会带来大量的代码编写,提高了复杂度和成本。
因此,寻找一种既能便利配置又不需要大量的代码编写的实现属性文件及时更新的属性加载方法是一个亟需解决的问题。
发明内容
为了克服上述现有技术中存在的缺陷,本发明的目的是提供一种动态属性加载方法及系统,该方法既能实现动态属性的便利配置又不需要大量的代码编写,降低了复杂度和成本。
为了实现本发明的上述目的,根据本发明的第一个方面,本发明提供了一种动态属性加载方法,包括如下步骤:
S1:抽象属性值来源,其中所述抽象属性值来源是判断所述属性值是动态属性来源还是静态属性来源,如果是动态属性来源,则执行步骤S2;如果是静态属性来源,则判断本地是否已经存在所述属性值,如果不存在,则执行步骤S 3;
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或者网络路径web path目录下,则与情况1的属性文件加载方法相同;
情况5,如果系统确认设置的属性目录是存在的,那么将调用类加载器Classloader进行处理,加载属性文件。
本发明当前要加载的属性文件的路径可以是当前系统中的类路径classpath,也可以是任意网络可以连通道的物理地址,这样能够提高兼容性。
在本发明的一种优选实施例中,在步骤S1之前可以具有以下步骤:设置动态属性的默认值。
本发明通过对属性值设置默认值,使动态属性具有高的容错性。
为了实现本发明的上述目的,根据本发明的第一个方面,本发明提供了一种属性加载系统,包括抽象属性值来源模块,用于抽象属性值来源,其中所述抽象属性值来源是判断所述属性值是动态属性来源还是静态属性来源,如果是动态属性来源,则执行属性文件状态检查模块;如果是静态属性来源,则判断本地是否已经存在所述属性值,如果不存在,则执行数据类型强制转换模块;属性文件状态检查模块,用于定时对所述属性值对应的属性文件进行状态检查,如果属性文件与历史记录对比没有修改,则返回所述抽象属性值来源模块,如果属性文件与历史记录对比有修改,则执行所述数据类型强制转换模块;数据类型强制转换模块,用于对所述属性文件的数据类型按照强制化约定进行转换;以及属性文件加载模块,用于加载所述转换后的属性文件。
本发明的属性加载系统既能实现动态属性的配置也能实现静态属性的配置,能够在提高应用便捷性的同时降低复杂度和成本。本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明属性加载方法的流程图;
图2是本发明一种优选实施例中的配置案例;
图3是本发明属性加载系统的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
本发明提供了一种属性加载方法,如图1所示,其包括如下步骤:
S1:抽象属性值来源,其中该抽象属性值来源是判断属性值是动态属性来源还是静态属性来源,如果是动态属性来源,则进入步骤S2,如果是静态属性来源,则判断该属性值是否已经存在,如果不存在,则进入步骤S3,如果存在,则退出;
S2:定时对所述属性值对应的属性文件进行状态检查,如果属性文件与历史记录对比没有修改,则返回步骤S1,如果属性文件与历史记录对比有修改,则进入步骤S3;
S3:对属性文件的数据类型按照强制化约定进行转换;
S4:加载转换后的属性文件。
在本发明的一种优选实施方式中,该属性加载方法具体包括如下方法:
第一步:抽象属性值来源,本发明可支持任意的属性值来源,优选支持动态属性来源和静态属性来源,在本实施方式中,具体是判断属性值来源,即属性值对应的属性文件的来源是动态属性来源还是静态属性来源,通过这样的抽象处理,无论开发中是否需要动态还是静态,都可以使用同样的配置和代码编写方式进行,从而保持了项目开发的规范的统一,唯一不同的只是如果是动态需求就用动态的属性来源实现,静态的需求就用静态的属性来源实现。如果属性值来源是动态属性来源,则执行第二步,如果属性值来源是静态属性来源,则判断本地是否已经存在该属性值,如果不存在,则执行第三步,如果存在,则退出,不做任何处理操作;
需要说明的是,属性值是个抽象的称呼,它的来源可以是常规的属性文件,也可以是其它类型的文件,可以通过数据库,甚至是调用外部的WebService或者JMS等获得,因此,如有需要也可自定义属性来源。
在本实施方式中,DynamicPerpertySource指动态属性来源,StaticPropertySource指静态属性来源,DefaultDynamicPropertySource为默认动态属性来源,本发明动态需求用动态的属性来源实现,静态的需求用静态的属性来源实现。平台默认提供的属性文件来源实现中,可支持默认情况下对classpath(类路径)下指定文件名的属性文件处理或者非当前应用环境下,即非classpath或者web path(网络路径)的某个目录下该文件名的属性文件处理。
由于有些属性文件是在当前classpath下,有些可能不在,因此,属性文件的加载需要分为两种情况,一是通过当前类的Classloader(类加载器)加载,二是通过扩展的文件系统进行加载。本发明提供一个默认的可支持任意文件系统属性文件加载的来源实现,动态属性支持当前环境和外部环境,静态属性支持当前环境,并且所有基于IPropertySource(自定义属性来源)的实现都是属性数据类型的来源,需要在配置文件中注入。
在本实施方式中,需要定时对属性值来源(即属性文件的来源)进行检查。
第二步:定时对属性值对应的属性文件进行状态检查,如果属性文件与历史记录对比没有修改,则返回第一步,如果属性文件与历史记录对比有修改,则进入下一步。在本实施方式中,通过ScheduledExecutorFactoryBean(任务执行器)设置心跳周期,如果心跳周期到了而属性文件未修改则不再重新加载。在本发明的一种更加优选的实施方式中,心跳周期为3秒,该心跳周期的长度长于对属性文件来源进行定时检查的周期和对属性文件进行定时状态检查的周期。
同时,考虑到实际运行时的效率性能问题,需要对文件是否有过修改做个状态检查,如果和上次的历史记录对比没有修改则不需要加载属性文件,从而降低对资源的消耗。在本实施方式中,对属性值的数据类型强制检查失败后将自动保留上次的数据信息。在本发明的一种优选实施方式中,只考虑属性文件的修改状态检查,即通过PropertyFilesModificationStateChceker(属性文件的修改状态检查器)对属性文件进行状态检查。
第三步:对属性文件的数据类型按照强制化约定进行转换。
在本实施方式中,对属性数据类型的强制化约定是指对应于JDK的7种级别数据类型,即对BooleanPropertyDataType(布尔属性数据类型)、DataPropertyDataType(日期属性数据类型)、IntPropertyDataType(整型属性数据类型)、FloatPropertyDataType(浮点属性数据类型)、DoublePropertyDataType(双精度浮点属性数据类型)、LongPropertyDataType(长整型属性数据类型)和StringPropertyDataType(字符属性数据类型)做出的属性数据类型强制化约定,可满足任何的属性需求场景。
所述属性数据类型的强制化约定具体为,由于属性值的取出都首先是字符型,然后才能转换成对应的数据类型,因此,为了考虑并发的操作因素,所述JDK的7种级别数据类型中除了StringPropertyDataType之外,其它的属性数据类型都必须在返回简单数据类型的操作上加上同步锁。对于util.Date类型,它的转换是需要样式支持的,因此,DatePropertyDataType和其它属性数据类型的区别之处还在于需要在配置文件中注入日期转换格式Pattern。在对属性数据类型进行强制化约定后,通过函数BasePropertyValue对属性数据类型进行转换,其中,用到的具体配置有getName,即获得属性文件中的key(值);getPropertySource,即获得属性来源,getRawValue,即获得属性来源中的key对应的原始值。
第四步:加载属性文件。本发明通过DefaultDynamicPropertySource(默认动态属性来源)实现属性文件加载。加载属性文件的路径是当前系统中的classpath或者任意网络可以连通道的物理地址。如图2所示,在本发明一种优选实施方式中使用时所需配置案例,图中1-9行,通过Spring加载定义业务类Sample1ServiceImpl,以及类中需要动态加载的属性,定义属性的数据类型,属性的默认值,以及动态属性加载源。在本实施方式中,属性为floatNumber,定义属性的数据类型为FloatPropertyType,默认值为111.8888,动态属性加载源为propertySource。图中11-17行定义了动态属性加载源propertySource,在这里配置propertySource的一些属性,配置读取文件为dynamic.properties,在本实施方式中,是定义了类DefaultDynamicPropertySource,本实施方式中设置的心跳间隔时间为3秒,第一次加载后多长时间进行心跳判断,0为立即,配置文件所在的目录systemPropertyOfFolder,以及调度执行器executorService。图中18-21行定义了任务执行器,配置了执行器的检查目录以及线程池的个数,调度执行器负责读取文件内容。
从图中的配置文件中可看出,实际上本发明通过使用spring提供的任务执行器ScheduledExecutorFactoryBean来执行获取属性文件内容的任务,同时通过DefaultDynamicPropertySource来设置加载文件的间隔时间等数据,从而达到动态的目标。同时,使用动态属性功能后,由于同时还具有类型强制的特点,因此,配置文件中还使用了Sample1ServiceImpl。
对于图中11-17行所标示的代码,作用是决定当前要加载的属性文件的路径,它可以是当前系统中的classpath,也可以是任意网络可以连通道的物理地址。
在本实施方式中,具体的属性文件加载方法为:
一,其中的dynamic.properties(动态属性)文件默认情况下将是在当前系统的classpath下,因此将由Spring的ClassPathResource(类路径来源)进行属性文件加载;
二,如果不是情况第一种情况,动态属性文件需要另外指定目录,则通过系统属性文件夹设置系统属性值,并设置系统属性,则从系统属性中获取动态属性文件的目录。即如果dynamic.properties文件需要另外指定目录,则可通过系统属性文件夹<propertyname="systemPropertyOfFolder"value="cow.property.folder"/>设置系统属性值为cow.property.folder,然后设置系统属性System.setProperty("cow.property.folder","bin/folder");则本类将尝试从bin/folder中获取dynamic.properties的目录,并由Spring的类FileSystemResource进行属性文件加载;三,如果不是第一种情况也不是第二种情况,但系统已经设置了默认动态属性来源,则从默认动态属性来源中获取动态属性文件的目录,即如果在开发中虽然没有设置系统属性文件夹<property name="systemPropertyOf Folder"value="cow.property.folder"/>,但系统中已经设置了默认动态属性来源System.setProperty(DefaultDynamicPropertySource.DEFAULT_SYSTEM_PROPERTY_OF_PROPERTYFOLDER,"bin/folder");则本类也将尝试从bin/folder中获取dynamic.properties的目录,并由Spring的类FileSystemResource进行属性文件加载;
四,如果不是第一种情况、也不是第二章情况也不是第三种情况,则认为动态属性文件在当前类路径classpath或者网络路径web path目录下,则与情况1的属性文件加载方法相同,即如果没有设置系统属性文件夹<propertyname="systemPropertyOfFolder"value="cow.property.folder"/>,也没有通过代码设置默认动态属性来源System.setProperty(DefaultDynamicPropertySource.DEFAULT_SYSTEM_PROPERTY_OF_PROPERTYFOLDER,"bin/folder"),则本类将认为dynamic.properties文件在当前classpath或者web path目录下,等同第一种情况的效果,即由Spring的ClassPathResource进行加载;
五,如果系统确认设置的属性目录是存在的,那么就将调用合适的Classloader(类加载器)进行处理,加载属性文件。
在本发明的一种优秀实施方式中,可设置属性值动态更新的心跳周期,并且本发明支持修改判断处理,如果心跳周期到了而属性文件未修改则不再重新加载。还可在第一步之前设置属性值的默认值,进一步增强容错性。在本实施方式中,使用者可以在配置文件中对具体的默认值自行进行定义,例如设置属性floatNumber的数据类型为float,设置此属性的默认值为111.8888。
本发明通过使用spring的任务执行器ScheduledExecutorFactoryBean来执行获取属性文件内容的任务,同时通过DefaultDynamicPropertySource来设置加载文件的间隔时间等数据,从而达到动态的目标,即有配置的便利又不需要大量的代码编写,同时对应于JDK的7种级别数据类型做出的属性数据类型强制化约定能对属性值进行强制类型检查,以避免类型转换的隐患问题。
如图3所示,本发明还提供了一种属性加载系统,其包括抽象属性值来源模块30、属性文件状态检查模块31、数据类型强制转换模块32和属性文件加载模块33。其中,抽象属性值来源模块30的输出端分别与属性文件状态检查模块31的输入端和数据类型强制转换模块32的输入端相连,属性文件状态检查模块31的输出端与数据类型强制转换模块32的输入端相连,数据类型强制转换模块32的输出端与属性文件加载模块33的输入端相连。
抽象属性值来源模块30,用于抽象属性值来源,其中所述抽象属性值来源是判断属性值是动态属性来源还是静态属性来源;如果是动态属性来源,则将该属性值对应的属性文件传输至属性文件状态检查模块31,执行属性文件状态检查模块31;如果是静态属性来源,则判断该属性文件是否已经存在,如果不存在,则将该属性值对应的属性文件传输至数据类型强制转换模块32,执行数据类型强制转换模块32,如果存在,则该抽象属性值来源模块30对该属性文件不进行任何操作。
属性文件状态检查模块31,用于对抽象属性值来源模块30传输来的属性文件定时进行状态检查,如果属性文件与历史记录对比没有修改,则对该属性文件不进行任何操作,返回抽象属性值来源模块30;如果属性文件与历史记录对比有修改,则将该属性文件传输至数据类型强制转换模块32,执行数据类型强制转换模块32;
数据类型强制转换模块32,用于对抽象属性值来源模块30传输来的静态属性文件和属性文件状态检查模块31传输来的动态属性文件的数据类型进行转换,并将转换后的属性文件传输至属性文件加载模块33;该属性文件加载模块33,用于对转换后的属性文件进行加载。
本发明可在运行期动态更新属性值,可以基于动态属性特性的配置,也可以当成普通的静态属性使用,以统一属性使用,当然,此时的属性文件只在当前应用环境下获取。本发明使用了动态属性功能后,仍旧可以按照静态的方式去获取属性,从而在一些情况下无须改动代码就完成动态到静态的替换。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

Claims (11)

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,动态属性文件需要另外指定目录,则通过系统属性文件夹设置系统属性值,并设置系统属性,则从系统属性中获取动态属性文件的目录,由Spring的文件系统资源类FileSystemResource进行属性文件加载;
情况3,如果不是情况1也不是情况2,但系统已经设置了默认动态属性来源,则从默认动态属性来源中获取动态属性文件的目录,由Spring的文件系统资源类FileSystemResource进行属性文件加载;
情况4,如果不是情况1、不是情况2也不是情况3,则认为动态属性文件在当前类路径classpath或者网络路径web path目录下,则与情况1的属性文件加载方法相同;
情况5,如果系统确认设置的属性目录是存在的,那么将调用类加载器Classloader进行处理,加载属性文件。
9.如权利要求7所述的属性加载方法,其特征在于:具体的属性文件加载方法为:
情况1,动态属性文件默认情况下的目录是当前系统的类路径classpath,由Spring的类路径来源ClassPathResource进行属性文件加载;
情况2,如果不是情况1,动态属性文件需要另外指定目录,则通过系统属性文件夹设置系统属性值,并设置系统属性,则从系统属性中获取动态属性文件的目录,由Spring的文件系统资源类FileSystemResource进行属性文件加载;
情况3,如果不是情况1也不是情况2,但系统已经设置了默认动态属性来源,则从默认动态属性来源中获取动态属性文件的目录,由Spring的文件系统资源类FileSystemResource进行属性文件加载;
情况4,如果不是情况1、不是情况2也不是情况3,则认为动态属性文件在当前类路径classpath或者网络路径web path目录下,则与情况1的属性文件加载方法相同;
情况5,如果系统确认设置的属性目录是存在的,那么将调用类加载器Classloader进行处理,加载属性文件。
10.如权利要求1所述的属性加载方法,其特征在于:在步骤S1之前可以具有以下步骤:设置动态属性的默认值。
11.一种属性加载系统,其特征在于,包括:
抽象属性值来源模块,用于抽象属性值来源,其中所述抽象属性值来源是判断所述属性值是动态属性来源还是静态属性来源,如果是动态属性来源,则执行属性文件状态检查模块;如果是静态属性来源,则判断本地是否已经存在所述属性值,如果不存在,则执行数据类型强制转换模块;
属性文件状态检查模块,用于定时对所述属性值对应的属性文件进行状态检查,如果属性文件与历史记录对比没有修改,则返回所述抽象属性值来源模块,如果属性文件与历史记录对比有修改,则执行所述数据类型强制转换模块;
数据类型强制转换模块,用于对所述属性文件的数据类型按照强制化约定进行转换;
属性文件加载模块,用于加载所述转换后的属性文件。
CN201210491384.2A 2012-11-27 2012-11-27 一种属性加载方法及系统 Active CN103838564B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210491384.2A CN103838564B (zh) 2012-11-27 2012-11-27 一种属性加载方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210491384.2A CN103838564B (zh) 2012-11-27 2012-11-27 一种属性加载方法及系统

Publications (2)

Publication Number Publication Date
CN103838564A CN103838564A (zh) 2014-06-04
CN103838564B true CN103838564B (zh) 2017-02-15

Family

ID=50802105

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210491384.2A Active CN103838564B (zh) 2012-11-27 2012-11-27 一种属性加载方法及系统

Country Status (1)

Country Link
CN (1) CN103838564B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104376483B (zh) * 2014-12-10 2018-05-18 用友网络科技股份有限公司 业务系统嵌入多维分析模型的装置和方法
CN106055348B (zh) * 2016-05-19 2019-07-12 青岛海信电器股份有限公司 一种通知系统属性更新的方法和装置
CN107621972A (zh) * 2016-07-15 2018-01-23 中兴通讯股份有限公司 大数据任务动态管理方法、装置及服务器
CN106990979A (zh) * 2017-01-22 2017-07-28 阿里巴巴集团控股有限公司 一种配置信息更新方法、系统、客户端及服务器
CN111124931B (zh) * 2019-12-30 2023-10-10 中国农业银行股份有限公司 一种Java代码合规性检查方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1187001A2 (de) * 2000-02-24 2002-03-13 Knowlogy Systems GmbH Integriertes Wissens-Technologiesystem
CN101131635A (zh) * 2006-08-24 2008-02-27 凌阳科技股份有限公司 动态链接函数库与主应用程序共享静态链接函数库的方法
CN101452396A (zh) * 2008-12-25 2009-06-10 上海交通大学 结合静态优化的动态二进制翻译方法
CN102479241A (zh) * 2010-11-30 2012-05-30 英业达股份有限公司 先提供预建立文件的查找系统及其方法
CN102508668A (zh) * 2011-11-11 2012-06-20 西安交通大学 一种基于动态栈的ejb3 容器aop 实现方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1187001A2 (de) * 2000-02-24 2002-03-13 Knowlogy Systems GmbH Integriertes Wissens-Technologiesystem
CN101131635A (zh) * 2006-08-24 2008-02-27 凌阳科技股份有限公司 动态链接函数库与主应用程序共享静态链接函数库的方法
CN101452396A (zh) * 2008-12-25 2009-06-10 上海交通大学 结合静态优化的动态二进制翻译方法
CN102479241A (zh) * 2010-11-30 2012-05-30 英业达股份有限公司 先提供预建立文件的查找系统及其方法
CN102508668A (zh) * 2011-11-11 2012-06-20 西安交通大学 一种基于动态栈的ejb3 容器aop 实现方法

Also Published As

Publication number Publication date
CN103838564A (zh) 2014-06-04

Similar Documents

Publication Publication Date Title
CN108027722B (zh) 在编译和部署中动态更新应用
CN103838564B (zh) 一种属性加载方法及系统
CN112988153B (zh) 基于微前端的数据处理方法及框架
US20160019073A1 (en) Dynamically Loaded Plugin Architecture
CN102985907B (zh) 在动态类加载器环境下管理遗留软件的静态数据结构的方法和系统
US20070220492A1 (en) Application verifier infrastructure and checks
US20110185282A1 (en) User-Interface-Integrated Asynchronous Validation for Objects
US8910180B2 (en) Interdependent task management by executing tasks based on the “for all” task attributes and existence of semaphore in a task dependency chain
CN102023856A (zh) 根据用户的需求格式化输出及操作伺服端业务数据的方法
CN103955364A (zh) 一种适用于手机的前端组件方法
CN105426310A (zh) 一种检测目标进程的性能的方法和装置
CN100549957C (zh) 一种类装载隔离的方法及一种类装载隔离的装置
CN110888652A (zh) 基于jenkins插件的多版本构建方法及终端
US9430216B2 (en) Self-contained executable for predetermined software updating
US20060253854A1 (en) Extensible infrastructure for task display and launch
CN103279569B (zh) 更改系统主题的方法及装置
CN103729224A (zh) 基于开放平台的应用加载方法及装置
US8146109B2 (en) Version resiliency for a host application and custom code
CN108228266A (zh) 一种Android插件框架下不同插件间启动Fragment组件的方法和装置
CN108563475A (zh) 应用程序的运行方法、装置及存储介质
JP2013152667A (ja) 操作画面の試験シナリオ生成装置、試験シナリオ生成方法およびプログラム
CN105320601A (zh) 一种用于应用程序的测试方法及装置
EP2348408B1 (en) Method and system for communicating between computing devices
CN112698885B (zh) 运行方法和装置
KR101460787B1 (ko) 스마트폰에서 구동되는 홈 어플리케이션 실행 방법, 시스템, 유저 인터페이스 프레임워크, 및 컴퓨터 판독 가능한 기록 매체

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200605

Address after: Room 502-1, floor 5, building 2, courtyard 10, KEGU 1st Street, economic development zone, Daxing District, Beijing 100081

Patentee after: Singularity Xinyuan International Technology Development (Beijing) Co.,Ltd.

Address before: 401121 Chongqing new high tech area in northern Yubei District Mount Huangshan South Road No. 5 Mercury Technology Building 1 floor office No. 3

Patentee before: A-MEDIA COMMUNICATION TECH Co.,Ltd.