protected Properties load(String name, String includePropertyName, Set<String> history) throws InvalidPropertiesFormatException, IOException{
		if (history != null && history.contains(name)){	// to prevent looping
			throw new IllegalArgumentException("Loop found when loading properties file: " + name);
		}
		Properties result = loadWithoutInclude(name);
		if (result != null){
			String includedResources = result.getProperty(includePropertyName);
			if (includedResources != null){
				result.remove(includePropertyName);
				if (history == null){
					history = new HashSet<String>();
				}
				history.add(name);
				for (String includedName: includedResources.split(DELIMITERS)){
					Properties p = load(includedName, includePropertyName, history);
					if (p != null){
						result.putAll(p);
					}
				}
			}
		}
		return result;
	}
protected Properties load ( String name , String includePropertyName , Set < String > history ) throws InvalidPropertiesFormatException , IOException { if ( history != null && history . contains ( name ) ) { throw new IllegalArgumentException ( "Loop found when loading properties file: " + name ) ; } Properties result = loadWithoutInclude ( name ) ; if ( result != null ) { String includedResources = result . getProperty ( includePropertyName ) ; if ( includedResources != null ) { result . remove ( includePropertyName ) ; if ( history == null ) { history = new HashSet < String > ( ) ; } history . add ( name ) ; for ( String includedName : includedResources . split ( DELIMITERS ) ) { Properties p = load ( includedName , includePropertyName , history ) ; if ( p != null ) { result . putAll ( p ) ; } } } } return result ; }
(Internal usage only) Load properties from resource, with handling of the inclusion.<br>
（内部使用）从指定的资源中载入properties，处理包含关系。
@param name	location of the properties file, which can ends with &quot;.*&quot;.<br>
properties文件的位置，可以以&quot;.*&quot;结尾。
@param includePropertyName	To override the default inclusion keyword.<br>
如果不想使用缺省的包含属性关键字，可以在这里指定。
@param history		names of the files that have been loaded before.
@return	null if not found, otherwise return the loaded properties
@throws IOException resource found, but error when reading
@throws InvalidPropertiesFormatException resource found, but with wrong format