Interface Config
-
@ProviderType public interface ConfigResolves the property value by searching through all configuredConfigSources. If the same property is specified in multipleConfigSources, the value in theConfigSourcewith the highest ordinal will be used.If multiple
ConfigSourcesare specified with the same ordinal, theConfigSource.getName()will be used for sorting.The config objects produced via the injection model
@Inject Configare guaranteed to be serializable, while the programmatically created ones are not required to be serializable.If one or more converters are registered for a class of a requested value then the registered
Converterwhich has the highest@jakarta.annotation.Priorityis used to convert the string value retrieved from the config sources.Usage
For accessing the config you can use the
ConfigProvider:public void doSomething() { Config cfg = ConfigProvider.getConfig(); String archiveUrl = cfg.getValue("my.project.archive.endpoint", String.class); Integer archivePort = cfg.getValue("my.project.archive.port", Integer.class); }It is also possible to inject the Config if a DI container is available:
public class MyService { @Inject private Config config; }See
getValue(String, Class)andgetOptionalValue(String, Class)for accessing a configured value.Configured values can also be accessed via injection. See
ConfigPropertyfor more information.- Author:
- Mark Struberg, Gerhard Petracek, Ron Smeral, Emily Jiang, Gunnar Morling
-
-
Field Summary
Fields Modifier and Type Field Description static StringPROFILEThe value of the property specifies a single active profile.static StringPROPERTY_EXPRESSIONS_ENABLEDThe value of the property determines whether the property expression is enabled or disabled.
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description Iterable<ConfigSource>getConfigSources()Return all of the currently registered configuration sources for this configuration.ConfigValuegetConfigValue(String propertyName)Return theConfigValuefor the specified property name from the underlying configuration source.<T> Optional<Converter<T>>getConverter(Class<T> forType)Return theConverterused by this instance to produce instances of the specified type from string values.<T> Optional<T>getOptionalValue(String propertyName, Class<T> propertyType)Return the resolved property value with the specified type for the specified property name from the underlying configuration sources.default <T> Optional<List<T>>getOptionalValues(String propertyName, Class<T> propertyType)Return the resolved property values with the specified type for the specified property name from the underlying configuration sources.Iterable<String>getPropertyNames()Returns a sequence of configuration property names.<T> TgetValue(String propertyName, Class<T> propertyType)Return the resolved property value with the specified type for the specified property name from the underlying configuration sources.default <T> List<T>getValues(String propertyName, Class<T> propertyType)Return the resolved property values with the specified type for the specified property name from the underlying configuration sources.<T> Tunwrap(Class<T> type)Returns an instance of the specific class, to allow access to the provider specific API.
-
-
-
Field Detail
-
PROFILE
static final String PROFILE
The value of the property specifies a single active profile.- See Also:
- Constant Field Values
-
PROPERTY_EXPRESSIONS_ENABLED
static final String PROPERTY_EXPRESSIONS_ENABLED
The value of the property determines whether the property expression is enabled or disabled. The valuefalsemeans the property expression is disabled, whiletruemeans enabled. By default, the value is set totrue.- See Also:
- Constant Field Values
-
-
Method Detail
-
getValue
<T> T getValue(String propertyName, Class<T> propertyType)
Return the resolved property value with the specified type for the specified property name from the underlying configuration sources.The configuration value is not guaranteed to be cached by the implementation, and may be expensive to compute; therefore, if the returned value is intended to be frequently used, callers should consider storing rather than recomputing it.
The result of this method is identical to the result of calling
getOptionalValue(propertyName, propertyType).get(). In particular, If the given property name or the value element of this property does not exist, theNoSuchElementExceptionis thrown. This method never returnsnull.- Type Parameters:
T- The property type- Parameters:
propertyName- The configuration property namepropertyType- The type into which the resolved property value should get converted- Returns:
- the resolved property value as an instance of the requested type (not
null) - Throws:
IllegalArgumentException- if the property cannot be converted to the specified typeNoSuchElementException- if the property is not defined or is defined as an empty string or the converter returnsnull
-
getConfigValue
ConfigValue getConfigValue(String propertyName)
Return theConfigValuefor the specified property name from the underlying configuration source. The lookup of the configuration is performed immediately, meaning that calls toConfigValuewill always yield the same results.The configuration value is not guaranteed to be cached by the implementation, and may be expensive to compute; therefore, if the returned value is intended to be frequently used, callers should consider storing rather than recomputing it.
A
ConfigValueis always returned even if a property name cannot be found. In this case, every method inConfigValuereturnsnullexcept forConfigValue.getName(), which includes the original property name being looked up.- Parameters:
propertyName- The configuration property name- Returns:
- the resolved property value as a
ConfigValue
-
getValues
default <T> List<T> getValues(String propertyName, Class<T> propertyType)
Return the resolved property values with the specified type for the specified property name from the underlying configuration sources.The configuration values are not guaranteed to be cached by the implementation, and may be expensive to compute; therefore, if the returned values are intended to be frequently used, callers should consider storing rather than recomputing them.
- Type Parameters:
T- The property type- Parameters:
propertyName- The configuration property namepropertyType- The type into which the resolved property values should get converted- Returns:
- the resolved property values as a list of instances of the requested type
- Throws:
IllegalArgumentException- if the property values cannot be converted to the specified typeNoSuchElementException- if the property isn't present in the configuration or is defined as an empty string or the converter returnsnull
-
getOptionalValue
<T> Optional<T> getOptionalValue(String propertyName, Class<T> propertyType)
Return the resolved property value with the specified type for the specified property name from the underlying configuration sources.The configuration value is not guaranteed to be cached by the implementation, and may be expensive to compute; therefore, if the returned value is intended to be frequently used, callers should consider storing rather than recomputing it.
If this method is used very often then consider to locally store the configured value.
- Type Parameters:
T- The property type- Parameters:
propertyName- The configuration property namepropertyType- The type into which the resolved property value should be converted- Returns:
- The resolved property value as an
Optionalwrapping the requested type - Throws:
IllegalArgumentException- if the property cannot be converted to the specified type
-
getOptionalValues
default <T> Optional<List<T>> getOptionalValues(String propertyName, Class<T> propertyType)
Return the resolved property values with the specified type for the specified property name from the underlying configuration sources.The configuration values are not guaranteed to be cached by the implementation, and may be expensive to compute; therefore, if the returned values are intended to be frequently used, callers should consider storing rather than recomputing them.
- Type Parameters:
T- The property type- Parameters:
propertyName- The configuration property namepropertyType- The type into which the resolved property values should be converted- Returns:
- The resolved property values as an
Optionalwrapping a list of the requested type - Throws:
IllegalArgumentException- if the property cannot be converted to the specified type
-
getPropertyNames
Iterable<String> getPropertyNames()
Returns a sequence of configuration property names. The order of the returned property names is unspecified.The returned property names are unique; that is, if a name is returned once by a given iteration, it will not be returned again during that same iteration.
There is no guarantee about the completeness or currency of the names returned, nor is there any guarantee that a name that is returned by the iterator will resolve to a non-empty value or be found in any configuration source associated with the configuration; for example, it is allowed for this method to return an empty set always. However, the implementation should return a set of names that is useful to a user that wishes to browse the configuration.
It is implementation-defined whether the returned names reflect a point-in-time "snapshot" of names, or an aggregation of multiple point-in-time "snapshots", or a more dynamic view of the available property names. Implementations are not required to return the same sequence of names on each iteration; however, the produced
Iteratormust adhere to the contract of that class, and must not return any more elements once itshasNext()method returnsfalse.The returned instance is thread safe and may be iterated concurrently. The individual iterators are not thread-safe.
- Returns:
- the names of all configured keys of the underlying configuration
-
getConfigSources
Iterable<ConfigSource> getConfigSources()
Return all of the currently registered configuration sources for this configuration.The returned sources will be sorted by descending ordinal value and name, which can be iterated in a thread-safe manner. The
Iterablecontains a fixed number of configuration sources, determined at application start time, and the config sources themselves may be static or dynamic.- Returns:
- the configuration sources
-
getConverter
<T> Optional<Converter<T>> getConverter(Class<T> forType)
Return theConverterused by this instance to produce instances of the specified type from string values.- Type Parameters:
T- the conversion type- Parameters:
forType- the type to be produced by the converter- Returns:
- an
Optionalcontaining the converter, or empty if no converter is available for the specified type
-
unwrap
<T> T unwrap(Class<T> type)
Returns an instance of the specific class, to allow access to the provider specific API.If the MP Config provider implementation does not support the specified class, a
IllegalArgumentExceptionis thrown.Unwrapping to the provider specific API may lead to non-portable behaviour.
- Type Parameters:
T- The type to unwrap to- Parameters:
type- Class representing the type to unwrap to- Returns:
- An instance of the given type
- Throws:
IllegalArgumentException- If the current provider does not support unwrapping to the given type
-
-