<dependency>
<groupId>org.apache.geronimo.config</groupId>
<artifactId>geronimo-config-impl</artifactId>
<version>1.0</version>
</dependency>
19 September 2017
To get started with Geronimo Config, you’ll want to add the dependencies to the project. Eclipse MicroProfile Config is a transitive dependency, it will come in automatically as a dependency.
If you’re using Maven:
<dependency>
<groupId>org.apache.geronimo.config</groupId>
<artifactId>geronimo-config-impl</artifactId>
<version>1.0</version>
</dependency>
If you’re using Gradle:
dependencies {
compile 'org.apache.geronimo.config:geronimo-config-impl:1.0'
}
ConfigSource
implementations can be registered via ServiceLoader
. Declare a ServiceLoader
of type ConfigSource
or ConfigSourceProvider
to register these classes.
By default, we register a ConfigSource
for System Properties as well as Environment Variables.
Environment Variables are attempted using both .
as well as _
, meaning a property lookup for my.config.property
will search both my.config.property
as well as my_config_property
, to conform to naming convention standards for environment variables.
System Properties are loaded on start up, copying the values into the config source instance. You can change this behavior by:
- disabling default config source loading, and manually registering a SystemPropertyConfigSource
passing in false
in the constructor
- Set the system property org.apache.geronimo.config.configsource.SystemPropertyConfigSource.copy
to false
Being an implementation of a MicroProfile specification, it favors use cases based on CDI. Most of the heavy lifting is done for you when using CDI.
The MicroProfile Config
interface is supported as an injection point. It is an @ApplicationScoped
bean, loaded from the result of ConfigProvider.getConfig()
.
@Inject
private Config config
Will allow you to use the default Config
object for your application. All of the operations of Config
match the MicroProfile Specification.
Injecting @ConfigProperty
works based on the specification.
In addition to the defined supported types, Geronimo Config supports injecting Supplier<T>
where T
is any type that has a supported Converter
.
You may not be using CDI, or do not want to use the built in CDI integration. You can then using the programmatic look up for the configuration.
Config config = ConfigProviderResolver.instance().getBuilder()
.addDefaultSources() // built in config sources (system properties, environment variables and microprofile-config.properties
.addDiscoveredConverters() // converters discovered via ServiceLoader
.addDiscoveredSources() // sources discovered via ServiceLoader
.withConverters() // list of converter instances, cannot be lambda expressions
.withSources() // list of config source instances
.forClassLoader() // the classloader associated with this config
.build()
This will register and build a Config
object for use. You will need to keep track of that created instance. If you want it to be managed automatically, you can then register it
ConfigProviderResolver.instance().registerConfig(config, classLoader);