Configurator

Introduction

The Configurator project is designed to provide a unified and flexible abstraction for accessing configuration data from various sources. This could include local files (e.g., JSON, XML, YAML), environment variables, or remote configuration services (like AWS Parameter Store, Azure App Configuration).

The core objective of the Configurator project is to simplify the management of configuration settings across different environments (development, staging, production) and facilitate easy integration with different kinds of configuration data providers.

Purpose

  • Unified Configuration Access: Provide a single interface for fetching configuration data, abstracting away the specifics of the underlying data source.
  • Flexibility: Easily add or switch between different configuration sources with minimal changes to the application code.
  • Consistency: Ensure consistent configuration management practices across various components and services within the organization.
  • Extensibility: Design the system in a way that new configuration sources can be easily integrated as needed.

Dependency Graph

Dependency Graph

Class Diagram

Class Diagram

Configuration layers

PropertiesConfigurator finds the value following the following rules:

  • Try to get the Java setting by name,
  • if the Java setting is not found, the configurator will try to get the environment variables by name,
  • if we still have no value found, the configurator uses the value defined in the properties file.