public static Map<String, Object> getSubProperties(PropertySources propertySources, PropertyResolver propertyResolver, String prefix) {

		Map<String, Object> subProperties = new LinkedHashMap<String, Object>();

		String normalizedPrefix = normalizePrefix(prefix);

		for (PropertySource<?> source : propertySources) {
			for (String name : getPropertyNames(source)) {
				if (!subProperties.containsKey(name) && name.startsWith(normalizedPrefix)) {
					String subName = name.substring(normalizedPrefix.length());
					if (!subProperties.containsKey(subName)) { // take first one
						Object value = source.getProperty(name);
						if (value instanceof String) {
							// Resolve placeholder
							value = propertyResolver.resolvePlaceholders((String) value);
						}
						subProperties.put(subName, value);
					}
				}
			}
		}

		return unmodifiableMap(subProperties);
	}
Get prefixed {@link Properties}.

@param propertySources  {@link PropertySources}.
@param propertyResolver {@link PropertyResolver} to resolve the placeholder if present.
@param prefix           the prefix of property name.
@return Map
@see Properties
spring-cloud-alibaba-starters/spring-cloud-alibaba-commons/src/main/java/com/alibaba/cloud/commons/context/support/PropertySourcesUtils.java