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
First you need to fill in the configuration data
application.yaml
postgres: enabled: false name: "POSTGRES" driverClassName: "org.postgresql.Driver" jdbcUrl: "jdbc:postgresql://localhost:5432/playground_db" locationMigration: "classpath:db/migration/postgres" propertyPath: "postgres.jdbcUrl" users: runtime: "playground" flyway: "playground" passwords: runtime: "playground" flyway: "playground" hikari: connectionTimeout: 45000 idleTimeout: 60000 maxLifetime: 180000 maximumPoolSize: 50 minimumIdle: 5 connectionInitSql: "SELECT 1" connectionTestQuery: "SELECT 1" poolName: "core-postgres-db-pool" autoCommit: true
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
PathResolver
In version 0.0.11 added the ability to change the values of parameters while the application is running
To use, you first need to generate the appropriate file
To generate use this command
cmd/app generate cfg-with-resolver