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

== Spring Boot Auto-Configuration

When using gson 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-gson-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 4 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.dataformat.json-gson.content-type-header* | Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON | true | Boolean
| *camel.dataformat.json-gson.enabled* | Whether to enable auto configuration of the json-gson data format. This is enabled by default. |  | Boolean
| *camel.dataformat.json-gson.pretty-print* | To enable pretty printing output nicely formatted. Is by default false. | false | Boolean
| *camel.dataformat.json-gson.unmarshal-type-name* | Class name of the java type to use when unmarshalling |  | String
|===
// spring-boot-auto-configure options: END
