Skip to main content

Gestalt Config

A Java configuration library

Easy to Use

Easy Multi-Source Config Management

Gestalt enables easy merging of configurations from multiple sources (files, environment variables, maps) into a unified structure, simplifying how you manage application settings.

Focus on What Matters

Type-Safe Automatic Decoding

It automatically decodes configurations into Java objects, including beans, records, and lists, supporting Java and Kotlin, while providing error feedback for missing or invalid configs.

Powered by React

Modular and Lightweight

With zero core dependencies, Gestalt allows you to include only the necessary features, keeping your application lightweight and configurable for various environments or profiles.

Features

  • Automatic decoding based on type: Supports decoding into bean classes, lists, sets, or primitive types. This simplifies configuration retrieval.
  • Java Records: Full support for Java Records, constructing records from configuration using the Records Canonical Constructor.
  • Supports Multiple Formats: Load configurations from various sources, including Environment Variables, Property files, an in-memory map, and more.
  • Read Sub-sections of Your Config: Easily navigate to specific sub-sections within configurations using dot notation.
  • Kotlin interface: Full support for Kotlin with an easy-to-use Kotlin-esque interface, ideal for Kotlin projects.
  • Merge Multiple Sources: Seamlessly merge configurations from different sources to create comprehensive settings.
  • String Substitution: Build a config value by injecting Environment Variables, System Properties or other nodes into your strings.
  • node Substitution: Include whole config nodes loaded from files or other places in the config tree anywhere in your config tree.
  • A/B Testing: Segregate results based on groups or random results. See A/B Testing in the use cases section.
  • Flexible and Configurable: The library offers well-defined interfaces, allowing customization and extension.
  • Easy-to-Use Builder: Get started quickly with a user-friendly builder, or customize specific aspects of the library.
  • Receive All Errors Up Front: In case of configuration errors, receive multiple errors in a user-friendly log for efficient debugging.
  • Modular Support for Features: Include only the required features and dependencies in your build, keeping your application lightweight.
  • Zero Dependencies: The core library has zero external dependencies; add features and dependencies as needed.
  • Java 11 Minimum: Requires a minimum of Java 11 for compatibility with modern Java versions.
  • Java Modules: Supports Java 9 modules with proper exports.
  • Well Tested: Our codebase boasts an impressive > 91% code coverage, validated by over 1850 meaningful tests.