<commit_before>[![GitHub license](https://img.shields.io/github/license/cfg4j/cfg4j.svg)](https://github.com/cfg4j/cfg4j/blob/master/LICENSE)
[![Maven Central](https://img.shields.io/maven-central/v/org.cfg4j/cfg4j.svg)](http://search.maven.org/#search|ga|1|org.cfg4j.cfg4j)
[![Travis](https://img.shields.io/travis/cfg4j/cfg4j.svg)](https://travis-ci.org/cfg4j/cfg4j)

# Overview
**cfg4j** ("Configuration for Java") is a **distributed apps-oriented configuration library for Java**. It's very simple to use
 yet offers a comprehensive set of features:
* Distributed environment support:
    * Runtime configuration reload (periodical, push and custom)
    * Caching
    * Support for multi-tenant configuration sources (e.g. keep configuration for all your environments [test, preprod, prod] in one store)
    * Handle network failures (e.g. re-try, fallback to another source)
* Adapters for multiple configuration stores
    * Git repository - read more about this powerful solution in [this article]().
    * Consul (WIP)
    * ZooKeeper (WIP)
    * MySQL (WIP)
    * Files (YAML, Properties, XML)
* Easy yet flexible configuration management:
    * Merge configurations from different sources
    * Validation
    * POJO configuration objects binding
* Modern design
    * Well documented
    * Heavily tested
    * Dependency Injection-friendly

# Usage

## Sample apps
Explore the code of the [sample apps](https://github.com/cfg4j/cfg4-sample-apps).

## Detailed documentation
Head to [the documentation](http://cfg4j.org).

## Quick start
### Setting up dependency
#### Gradle
```groovy
dependencies {
  compile group: "org.cfg4j", name:"cfg4j", version: "3.0.0"
}
```<commit_msg>fix link to sample apps<commit_after>[![GitHub license](https://img.shields.io/github/license/cfg4j/cfg4j.svg)](https://github.com/cfg4j/cfg4j/blob/master/LICENSE)
[![Maven Central](https://img.shields.io/maven-central/v/org.cfg4j/cfg4j.svg)](http://search.maven.org/#search|ga|1|org.cfg4j.cfg4j)
[![Travis](https://img.shields.io/travis/cfg4j/cfg4j.svg)](https://travis-ci.org/cfg4j/cfg4j)

# Overview
**cfg4j** ("Configuration for Java") is a **distributed apps-oriented configuration library for Java**. It's very simple to use
 yet offers a comprehensive set of features:
* Distributed environment support:
    * Runtime configuration reload (periodical, push and custom)
    * Caching
    * Support for multi-tenant configuration sources (e.g. keep configuration for all your environments [test, preprod, prod] in one store)
    * Handle network failures (e.g. re-try, fallback to another source)
* Adapters for multiple configuration stores
    * Git repository - read more about this powerful solution in [this article]().
    * Consul (WIP)
    * ZooKeeper (WIP)
    * MySQL (WIP)
    * Files (YAML, Properties, XML)
* Easy yet flexible configuration management:
    * Merge configurations from different sources
    * Validation
    * POJO configuration objects binding
* Modern design
    * Well documented
    * Heavily tested
    * Dependency Injection-friendly

# Usage

## Sample apps
Explore the code of the [sample apps](https://github.com/cfg4j/cfg4j-sample-apps).

## Detailed documentation
Head to [the documentation](http://cfg4j.org).

## Quick start
### Setting up dependency
#### Gradle
```groovy
dependencies {
  compile group: "org.cfg4j", name:"cfg4j", version: "3.0.0"
}
```
{'fraction_non_alphanumeric': 0.12975523444411677, 'fraction_numerical': 0.012975523444411679, 'mean_word_length': 4.275272161741835, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 12, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3238589', 'n_tokens_mistral': 1082, 'n_tokens_neox': 1029, 'n_words': 298}