@Retention(value=RUNTIME)
@Target(value={METHOD,FIELD,PARAMETER,TYPE})
public @interface ConfigProperty
Binds the injection point with a configured value.
Can be used to annotate injection points of type TYPE
, Optional<TYPE>
or javax.inject.Provider<TYPE>
,
where TYPE
can be String
and all types which have appropriate converters.
Injected values are the same values that would be retrieved from an injected Config
instance
or from the instance retrieved from ConfigProvider.getConfig()
my.long.property
property.
The injected value does not change even if the underline
property value changes in the Config
.
Injecting a native value is recommended for a mandatory property and its value does not change at runtime or used by a bean with RequestScoped.
A further recommendation is to use the built in META-INF/microprofile-config.properties
file mechanism
to provide default values inside an Application.
If no configured value exists for this property, a DeplymentException
will be thrown during startup.
@Inject @ConfigProperty(name="my.long.property") private Long injectedLongValue;
my.optional.long.property
.
If the property does not exist, the value 123
will be assigned.
to injectedLongValue
.
@Inject @ConfigProperty(name="my.optional.long.property", defaultValue="123") private Long injectedLongValue;The following code injects an Optional value of
my.optional.int.property
.
@Inject @ConfigProperty(name = "my.optional.int.property") private Optional<Integer> intConfigValue;
my.long.property
property to resolve the property dynamically.
Each invocation to Provider#get()
will resolve the latest value from underlying Config
again.
The existence of configured values will get checked during startup.
Instances of Provider<T>
are guaranteed to be Serializable.
@Inject @ConfigProperty(name = "my.long.property" defaultValue="123") private Provider<Long> longConfigValue;
If ConfigProperty
is used with a type where no Converter
exists,
a deployment error will be thrown.
Modifier and Type | Fields and Description |
---|---|
static java.lang.String |
UNCONFIGURED_VALUE |
Modifier and Type | Optional Element and Description |
---|---|
java.lang.String |
defaultValue
The default value if the configured property value does not exist.
|
java.lang.String |
name
The key of the config property used to look up the configuration value.
|
public abstract java.lang.String name
<class_name>.<injetion_point_name>
,
where injection_point_name
is the field name or parameter name,
class_name
is the fully qualified name of the class being injected to.
If one of the class_name
or injection_point_name
cannot be determined, the value has to be provided.public abstract java.lang.String defaultValue
The default value if the configured property value does not exist.
If the target Type is not String a proper Converter
will get applied.
That means that any default value string should follow the formatting rules of the registered Converters.