Class YamlProcessor
java.lang.Object
org.springframework.beans.factory.config.YamlProcessor
- Direct Known Subclasses:
YamlMapFactoryBean,YamlPropertiesFactoryBean
Base class for YAML factories.
Requires SnakeYAML 2.0 or higher, as of Spring Framework 6.1.
- Since:
- 4.1
- Author:
- Dave Syer, Juergen Hoeller, Sam Brannen, Brian Clozel
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceStrategy interface used to test if properties match.static interfaceCallback interface used to process the YAML parsing results.static enumStatus returned fromYamlProcessor.DocumentMatcher.matches(java.util.Properties).static enumMethod to use for resolving resources. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected org.yaml.snakeyaml.YamlCreate theYamlinstance to use.getFlattenedMap(Map<String, Object> source) Return a flattened version of the given map, recursively following any nested Map or Collection values.protected voidprocess(YamlProcessor.MatchCallback callback) Provide an opportunity for subclasses to process the Yaml parsed from the supplied resources.voidsetDocumentMatchers(YamlProcessor.DocumentMatcher... matchers) A map of document matchers allowing callers to selectively use only some of the documents in a YAML resource.voidsetMatchDefault(boolean matchDefault) Flag indicating that a document for which all thedocument matchersabstain will nevertheless match.voidsetResolutionMethod(YamlProcessor.ResolutionMethod resolutionMethod) Method to use for resolving resources.voidsetResources(Resource... resources) Set locations of YAMLresourcesto be loaded.voidsetSupportedTypes(Class<?>... supportedTypes) Set the supported types that can be loaded from YAML documents.
-
Constructor Details
-
YamlProcessor
public YamlProcessor()
-
-
Method Details
-
setDocumentMatchers
A map of document matchers allowing callers to selectively use only some of the documents in a YAML resource. In YAML documents are separated by---lines, and each document is converted to properties before the match is made. For example,environment: dev url: https://dev.bar.com name: Developer Setup --- environment: prod url:https://foo.bar.com name: My Cool App
when mapped withsetDocumentMatchers(properties -> ("prod".equals(properties.getProperty("environment")) ? MatchStatus.FOUND : MatchStatus.NOT_FOUND));would end up asenvironment=prod url=https://foo.bar.com name=My Cool App
-
setMatchDefault
public void setMatchDefault(boolean matchDefault) Flag indicating that a document for which all thedocument matchersabstain will nevertheless match. Default istrue. -
setResolutionMethod
Method to use for resolving resources. Each resource will be converted to a Map, so this property is used to decide which map entries to keep in the final output from this factory. Default isYamlProcessor.ResolutionMethod.OVERRIDE. -
setResources
-
setSupportedTypes
Set the supported types that can be loaded from YAML documents.If no supported types are configured, only Java standard classes (as defined in
SafeConstructor) encountered in YAML documents will be supported. If an unsupported type is encountered, aComposerExceptionwill be thrown when the corresponding YAML node is processed.- Parameters:
supportedTypes- the supported types, or an empty array to clear the supported types- Since:
- 5.1.16
- See Also:
-
process
Provide an opportunity for subclasses to process the Yaml parsed from the supplied resources. Each resource is parsed in turn and the documents inside checked against thematchers. If a document matches it is passed into the callback, along with its representation as Properties. Depending on thesetResolutionMethod(ResolutionMethod)not all the documents will be parsed.- Parameters:
callback- a callback to delegate to once matching documents are found- See Also:
-
createYaml
protected org.yaml.snakeyaml.Yaml createYaml()Create theYamlinstance to use.The default implementation sets the "allowDuplicateKeys" flag to
false, enabling built-in duplicate key handling.If custom supported types have been configured, the default implementation creates a
Yamlinstance that filters out unsupported types encountered in YAML documents. If an unsupported type is encountered, aComposerExceptionwill be thrown when the node is processed.- See Also:
-
getFlattenedMap
Return a flattened version of the given map, recursively following any nested Map or Collection values. Entries from the resulting map retain the same order as the source. When called with the Map from aYamlProcessor.MatchCallbackthe result will contain the same values as theYamlProcessor.MatchCallbackProperties.- Parameters:
source- the source map- Returns:
- a flattened map
- Since:
- 4.1.3
-