Intro

This module is used to set global configuration on application. This is achieved by generating class with configuration (GlobalConfiguration)

For generation, a special utility project was created with the name configuration-generator

Initially, there was support for the hocon format. To get acquainted with the syntax, you can follow the link

https://github.com/lightbend/config


In version 0.0.9 added support for generating yaml files. Also retained support for the old format





Run from CLI 

To generate GlobalConfiguration class you need open a terminal and enter this command:

cmd/app generate cfg

All comands related to generation you can find in this file cmd/app




Flow

In resources folder are stored configuration files

Default file is a application.yaml/global.conf

During launching spring application according on all active profile all config/yaml files merge to GlobalConfiguration instance and save as a map to spring property source (it happens in PropertySourcesApplicationContextInitializer)

After that according on property source initialize GlobalConfiguration bean (GlobalConfigurationProvider)

Here is an example how the files are located:




Usage example 

After generation, this class with can be reused throughout the project

Example of use in flyway configuration:

GlobalConfiguration.Postgres postgres = globalConfiguration.postgres();
FluentConfiguration fluentConfiguration = Flyway.configure()
        .dataSource(postgres.jdbcUrl(), postgres.users().flyway(), postgres.passwords().flyway())
        .sqlMigrationPrefix("")
        .locations(postgres.locationMigration())
        .baselineOnMigrate(true);
Flyway flyway = fluentConfiguration.load();
flyway.migrate();

Where we connect GlobalConfiguration as a bean and get a subclass postgres() with all the setting for the database