public interface ConfigSource
A configuration source is always read-only; any potential updates of the backing configuration values must be handled directly inside each configuration source instance.
400
300
/META-INF/microprofile-config.properties
resource,
with an ordinal value of 100
Some operating systems allow only alphabetic characters or an underscore (_
) in environment variable names.
Other characters such as .
, /
, etc. may be disallowed. In order to set a value for a config property
that has a name containing such disallowed characters from an environment variable, the following rules are used.
Three environment variables are searched for a given property name (e.g. "com.ACME.size
"):
com.ACME.size
")com_ACME_size
")COM_ACME_SIZE
")The first of these environment variables that is found for a given name is returned.
Discovered configuration sources are loaded via the ServiceLoader
mechanism and and can be registered by
providing a resource named META-INF/services/org.eclipse.microprofile.config.spi.ConfigSource
,
which contains the fully qualified ConfigSource
implementation class name as its content.
Configuration sources may also be added by defining
ConfigSourceProvider
classes which are discoverable in this manner.
If a configuration source implements the AutoCloseable
interface,
then its close method will be called when
the underlying configuration is released.
Modifier and Type | Field and Description |
---|---|
static String |
CONFIG_ORDINAL
The name of the configuration ordinal property, "
config_ordinal ". |
static int |
DEFAULT_ORDINAL
The default configuration ordinal value,
100 . |
Modifier and Type | Method and Description |
---|---|
String |
getName()
The name of the configuration source.
|
default int |
getOrdinal()
Return the ordinal priority value of this configuration source.
|
Map<String,String> |
getProperties()
Return the properties in this configuration source as a map.
|
default Set<String> |
getPropertyNames()
Gets all property names known to this configuration source, without evaluating the values.
|
String |
getValue(String propertyName)
Return the value for the specified property in this configuration source.
|
static final String CONFIG_ORDINAL
config_ordinal
".static final int DEFAULT_ORDINAL
100
.Map<String,String> getProperties()
default Set<String> getPropertyNames()
For backwards compatibility, there is a default implementation that just returns the keys of getProperties()
.
Implementations should consider replacing this with a more performant implementation.
The returned property names may be a subset of the names of the total set of retrievable properties in this config source.
default int getOrdinal()
Note that this method is only evaluated during the construction of the configuration, and does not affect the ordering of configuration sources within a configuration after that time.
The ordinal values for the default configuration sources can be found above.
Any configuration source which is a part of an application will typically use an ordinal between 0 and 200. Configuration sources provided by the container or 'environment' typically use an ordinal higher than 200. A framework which intends have values overridden by the application will use ordinals between 0 and 100.
The default implementation of this method looks for a configuration property named "config_ordinal
"
to determine the ordinal value for this configuration source. If the property is not found, then the
default ordinal value is used.
This method may be overridden by configuration source implementations to provide a different behavior.
String getValue(String propertyName)
propertyName
- the property namenull
if the property is not presentString getName()
An example of a configuration source name is "property-file mylocation/myprops.properties
".
Copyright © 2020 Eclipse Foundation. All rights reserved.