Switch branches/tags
Nothing to show
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
src/main refresh -> reload Sep 29, 2015
README.md refresh -> reload Sep 29, 2015
build.gradle upgrade cfg4j to 4.0.0 Aug 10, 2015


cfg4j sample app (uses git as configuration store)

App demonstrating how to access configuration stored in a Git repository using cfg4j library. Uses configuration object binding.


> cd cfg4j-sample-apps/
> ./gradlew build
> java -jar git-bind/build/libs/git-bind-1.0.0-SNAPSHOT.jar

You can:

  • use any git repository: -DconfigRepoPath=<repositoryUrl> parameter. Both local and remote repos are supported.
  • use non-default branch: -DconfigBranch=<branchName>
> java -DconfigRepoPath=/tmp/myRepo.git -DconfigBranch=master -jar git-bind/build/libs/git-bind-1.0.0-SNAPSHOT.jar

Code snippets

Configuration beans - see ConfigBeans.java

private String configRepoPath; // Run with -DconfigRepoPath=<repositoryUrl> parameter to override

private String branch; // Run with -DconfigBranch=<branchName> parameter to override

public ConfigurationProvider configurationProvider() {
  // Use Git repository as configuration store
  ConfigurationSource source = new GitConfigurationSourceBuilder()

  // Select branch to use (use new DefaultEnvironment()) for master
  Environment environment = new ImmutableEnvironment(branch);

  // Reload configuration every 5 seconds
  ReloadStrategy reloadStrategy = new PeriodicalReloadStrategy(5, TimeUnit.SECONDS);

  // Create provider
  return new ConfigurationProviderBuilder()

Obtain configuration - see MainController.java

// Define configuration interface 
public interface ReksioConfig {
  URL homepage();

ReksioConfig reksioConfig = configurationProvider.bind("reksio", ReksioConfig.class);
URL url = reksioConfig.homepage();