> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration flow

> How DLC configuration precedence works across Java Spring bean descriptions, YAML configuration properties, and request-time loading topic overrides.

Configurations defined in Java have the lowest precedence and can be overridden by configuration properties, which in turn can be overridden at request time.

## Configuration flow

Configurations defined in Java (Description Spring Beans) have the lowest precedence
and can be overridden by configurations defined in configuration properties.

In addition, loading Topic Configurations can be overridden at request time.

<img src="https://mintcdn.com/activeviam/IsIvZesUS1qaG6Rx/solutions/libraries/data-load-controller/assets/configuration-flow.png?fit=max&auto=format&n=IsIvZesUS1qaG6Rx&q=85&s=50274b4aca1de2284576baa0460c7e5f" alt="Configuration Flow" width="960" height="540" data-path="solutions/libraries/data-load-controller/assets/configuration-flow.png" />

## Startup configuration

### Configuration properties

Configuration Properties get converted to Description objects on startup. These Configurations take precedence over Java Configuration.

<Note>
  Configuration Properties have some limitations —
  for example, column calculators and targets cannot be defined in configuration properties, only referenced by name.
</Note>

#### YAML example

```yaml theme={"languages":{"custom":["/engine/python-sdk/0.9/languages/pycon.tmLanguage.json"]}}
dlc:
  csv:
    local:
      sources:
        source1:
          root-base-dir: /base-dir
    topics:
      topic1:
        file-pattern: glob:trades*.csv
```

### Java configuration

Description Spring Beans are picked up as configuration.

##### Java example

```java theme={"languages":{"custom":["/engine/python-sdk/0.9/languages/pycon.tmLanguage.json"]}}
@Bean
public LocalCsvSourceDescription source1() {
    return LocalCsvSourceDescription.builder("source1", "/base-dir").build();
}

@Bean
public CsvTopicDescription topic1(NamedEntityResolverService namedEntityResolver) {
    return CsvTopicDescription.builder("topic1", "glob:trades*.csv")
            .build();
}
```

## Request time

### Loading topic overrides

At request time, the configurations defined at startup for a loading topic can also be overridden
by providing configuration properties in the request.

These override some or all of the configurations which belong to a loading topic which was configured at startup.

#### Example

```json theme={"languages":{"custom":["/engine/python-sdk/0.9/languages/pycon.tmLanguage.json"]}}
{
  "operation": "LOAD",
  "csvTopicOverrides": {
    "trades": {
      "filePattern": "glob:alternative_trades*.csv"
    }
  }
}
```
