Skip to content

Latest commit

 

History

History
115 lines (96 loc) · 4.34 KB

README.md

File metadata and controls

115 lines (96 loc) · 4.34 KB

GitHub license Maven Central Travis Documentation Examples JavaDoc

Overview

**cfg4j** ("Configuration for Java") is a **configuration library for Java distributed apps** (and not only).

Features:

  • Open source
  • Easy to use
  • Auto-reloads configuration
  • Powerful configuration mechanisms (interface binding, multi-source support with fallback strategy, merging, ...)
  • Distributed-environment friendly ( caching, support for multiple environments [test, preprod, prod], ...)
  • Reads configuration from: Consul, Git repos (YAML and/or properties), Files, Classpath, ...
  • Modern design
    • Seamless integration with DI containers: Spring, Guice and others
    • Exposes performance metrics by integration with Metrics library
    • Extensible (see the list of plugins below)
    • Heavily tested (99% code coverage)
    • Well documented
    • Java 8+ required

Usage

Sample apps

Explore the code of the sample apps.

Detailed documentation

Head to the documentation.

Quick start

Setting up dependency

Gradle

dependencies {
  compile group: "org.cfg4j", name:"cfg4j-core", version: "4.1.0"
  
  // For Consul integration
  compile group: "org.cfg4j", name:"cfg4j-consul", version: "4.1.0"
  
  // For git integration
  compile group: "org.cfg4j", name:"cfg4j-git", version: "4.1.0"
}

Maven

<dependencies>
  <dependency>
    <groupId>org.cfg4j</groupId>
    <artifactId>cfg4j-core</artifactId>
    <version>4.1.0</version>
  </dependency>
  <!-- For Consul integration -->
  <dependency> 
    <groupId>org.cfg4j</groupId>
    <artifactId>cfg4j-consul</artifactId>
    <version>4.1.0</version>
  </dependency>
  <!-- For git integration -->
  <dependency>
    <groupId>org.cfg4j</groupId>
    <artifactId>cfg4j-git</artifactId>
    <version>4.1.0</version>
  </dependency>
</dependencies>

Usage

The fastest way to start working with cfg4j is to use a Git repository as a configuration store. To do that follow the steps:

  • Use the following code in your application to connect to sample configuration source:
public class Cfg4jPoweredApplication {

  // Change this interface to whatever you want
  public interface SampleConfig {


    Integer birthYear();


    List<String> friends();


    URL homepage();


    Map<String, Character> grades();


  }

  public static void main(String... args) {
    ConfigurationSource source = new GitConfigurationSourceBuilder()
      .withRepositoryURI("https://github.com/cfg4j/cfg4j-git-sample-config.git")
      .build();
      
    ConfigurationProvider provider = new ConfigurationProviderBuilder()
      .withConfigurationSource(source)
      .build();
    
    SampleConfig config = configurationProvider.bind("reksio", SampleConfig.class);
    
    // Use it!
    System.out.println(config.homepage());
  }

}
  • Optional steps
    1. Fork the configuration sample repository.
    2. Add your configuration to the "application.properties" file and commit the changes.
    3. Update the code above to point to your fork.

License

Licensed under the Apache License, Version 2.0. See LICENSE file.