// spring-boot-auto-configure options: START
:page-partial:
:doctitle: Camel Spring Boot Starter for snakeyaml

== Spring Boot Auto-Configuration

When using snakeyaml with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-snakeyaml-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 11 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.dataformat.yaml-snakeyaml.allow-any-type* | Allow any class to be un-marshaled | false | Boolean
| *camel.dataformat.yaml-snakeyaml.allow-recursive-keys* | Set whether recursive keys are allowed. | false | Boolean
| *camel.dataformat.yaml-snakeyaml.constructor* | BaseConstructor to construct incoming documents. |  | String
| *camel.dataformat.yaml-snakeyaml.dumper-options* | DumperOptions to configure outgoing objects. |  | String
| *camel.dataformat.yaml-snakeyaml.enabled* | Whether to enable auto configuration of the yaml-snakeyaml data format. This is enabled by default. |  | Boolean
| *camel.dataformat.yaml-snakeyaml.max-aliases-for-collections* | Set the maximum amount of aliases allowed for collections. | 50 | Integer
| *camel.dataformat.yaml-snakeyaml.pretty-flow* | Force the emitter to produce a pretty YAML document when using the flow style. | false | Boolean
| *camel.dataformat.yaml-snakeyaml.representer* | Representer to emit outgoing objects. |  | String
| *camel.dataformat.yaml-snakeyaml.resolver* | Resolver to detect implicit type |  | String
| *camel.dataformat.yaml-snakeyaml.unmarshal-type-name* | Class name of the java type to use when unmarshalling |  | String
| *camel.dataformat.yaml-snakeyaml.use-application-context-class-loader* | Use ApplicationContextClassLoader as custom ClassLoader | true | Boolean
|===
// spring-boot-auto-configure options: END
