- 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
 
Explore the code of the sample apps.
Head to the documentation.
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"
}<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>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
- Fork the configuration sample repository.
- Add your configuration to the "application.properties" file and commit the changes.
- Update the code above to point to your fork.
 
Licensed under the Apache License, Version 2.0. See LICENSE file.