// component-configure options: START
== Configuring Options

Camel components are configured on two separate levels:

- component level
- endpoint level

=== Configuring Component Options

At the component level, you set general and shared configurations that are, then, inherited by the endpoints. It is the highest configuration level.

For example, a component may have security settings, credentials for authentication, urls for network connection and so forth.

Some components only have a few options, and others may have many.
Because components typically have pre-configured defaults that are commonly used, then you may often only need to configure a few options on a component; or none at all.

You can configure components using:

* the Component DSL.
* in a configuration file (`application.properties`, `*.yaml` files, etc).
* directly in the Java code.

=== Configuring Endpoint Options

You usually spend more time setting up endpoints because they have many options.
These options help you customize what you want the endpoint to do.
The options are also categorized into whether the endpoint is used as a consumer (_from_), as a producer (_to_), or  both.

Configuring endpoints is most often done directly in the endpoint URI as _path_ and _query_ parameters.
You can also use the Endpoint DSL and DataFormat DSL
as a _type safe_ way of configuring endpoints and data formats in Java.

A good practice when configuring options is to use Property Placeholders.

Property placeholders provide a few benefits:

* They help prevent using hardcoded urls, port numbers, sensitive information, and other settings.
* They allow externalizing the configuration from the code.
* They help the code to become more flexible and reusable.

The following two sections list all the options, firstly for the component followed by the endpoint.
// component-configure options: END
