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

== Spring Boot Auto-Configuration

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


The component supports 29 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.dataformat.csv.allow-missing-column-names* | Whether to allow missing column names. | false | Boolean
| *camel.dataformat.csv.comment-marker* | Sets the comment marker of the reference format. |  | String
| *camel.dataformat.csv.comment-marker-disabled* | Disables the comment marker of the reference format. | false | Boolean
| *camel.dataformat.csv.delimiter* | Sets the delimiter to use. The default value is , (comma) |  | String
| *camel.dataformat.csv.enabled* | Whether to enable auto configuration of the csv data format. This is enabled by default. |  | Boolean
| *camel.dataformat.csv.escape* | Sets the escape character to use |  | String
| *camel.dataformat.csv.escape-disabled* | Use for disabling using escape character | false | Boolean
| *camel.dataformat.csv.format-name* | The name of the format to use, the default value is CSVFormat.DEFAULT |  | String
| *camel.dataformat.csv.format-ref* | The reference format to use, it will be updated with the other format options, the default value is CSVFormat.DEFAULT |  | String
| *camel.dataformat.csv.header* | To configure the CSV headers |  | List
| *camel.dataformat.csv.header-disabled* | Use for disabling headers | false | Boolean
| *camel.dataformat.csv.ignore-empty-lines* | Whether to ignore empty lines. | false | Boolean
| *camel.dataformat.csv.ignore-header-case* | Sets whether or not to ignore case when accessing header names. | false | Boolean
| *camel.dataformat.csv.ignore-surrounding-spaces* | Whether to ignore surrounding spaces | false | Boolean
| *camel.dataformat.csv.lazy-load* | Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at one. | false | Boolean
| *camel.dataformat.csv.marshaller-factory-ref* | Sets the implementation of the CsvMarshallerFactory interface which is able to customize marshalling/unmarshalling behavior by extending CsvMarshaller or creating it from scratch. |  | String
| *camel.dataformat.csv.null-string* | Sets the null string |  | String
| *camel.dataformat.csv.null-string-disabled* | Used to disable null strings | false | Boolean
| *camel.dataformat.csv.quote* | Sets the quote which by default is |  | String
| *camel.dataformat.csv.quote-disabled* | Used to disable quotes | false | Boolean
| *camel.dataformat.csv.quote-mode* | Sets the quote mode |  | String
| *camel.dataformat.csv.record-converter-ref* | Refers to a custom CsvRecordConverter to lookup from the registry to use. |  | String
| *camel.dataformat.csv.record-separator* | Sets the record separator (aka new line) which by default is new line characters (CRLF) |  | String
| *camel.dataformat.csv.record-separator-disabled* | Used for disabling record separator |  | String
| *camel.dataformat.csv.skip-header-record* | Whether to skip the header record in the output | false | Boolean
| *camel.dataformat.csv.trailing-delimiter* | Sets whether or not to add a trailing delimiter. | false | Boolean
| *camel.dataformat.csv.trim* | Sets whether or not to trim leading and trailing blanks. | false | Boolean
| *camel.dataformat.csv.use-maps* | Whether the unmarshalling should produce maps (HashMap)for the lines values instead of lists. It requires to have header (either defined or collected). | false | Boolean
| *camel.dataformat.csv.use-ordered-maps* | Whether the unmarshalling should produce ordered maps (LinkedHashMap) for the lines values instead of lists. It requires to have header (either defined or collected). | false | Boolean
|===
// spring-boot-auto-configure options: END
