이 콘텐츠는 선택한 언어로 제공되지 않습니다.
Chapter 10. Using custom configuration converters as configuration values
You can store custom types as configuration values by implementing org.eclipse.microprofile.config.spi.Converter<T>
and adding its fully qualified class name into the META-INF/services/org.eclipse.microprofile.config.spi.Converter
file.
Prerequisites
-
You have created the Quarkus
config-quickstart
project.
Procedure
Include the fully qualified class name of the converter in your
META-INF/services/org.eclipse.microprofile.config.spi.Converter
service file as shown in the following example:org.acme.config.MicroProfileCustomValueConverter org.acme.config.SomeOtherConverter org.acme.config.YetAnotherConverter
Implement the converter class to override the convert method:
package org.acme.config; import org.eclipse.microprofile.config.spi.Converter; public class MicroProfileCustomValueConverter implements Converter<MicroProfileCustomValue> { @Override public MicroProfileCustomValue convert(String value) { return new MicroProfileCustomValue(Integer.valueOf(value)); } }
NoteYour custom converter class must be
public
and must have apublic
no-argument constructor. Your custom converter class cannot beabstract
.Use your custom type as a configuration value:
@ConfigProperty(name = "configuration.value.name") MicroProfileCustomValue value;
Additional resources:
10.1. Setting custom converters priority
The default priority for all Quarkus core converters is 200 and for all other converters it is 100. However, you can set a higher priority for your custom converters using the javax.annotation.Priority
annotation.
The following procedure demonstrates an implementation of a custom converter MicroProfileCustomValue
that is assigned a priority of 150 and will take precedence over MicroProfileCustomValueConverter
which has a value of 100.
Prerequisites
-
You have created the Quarkus
config-quickstart
project.
Procedure
Add the following import statements to your service file:
package org.acme.config; import javax.annotation.Priority; import org.eclipse.microprofile.config.spi.Converter;
Set a priority for your custom converter by annotating the class with the
@Priority
annotation and passing it a priority value:@Priority(150) public class MyCustomConverter implements Converter<MicroProfileCustomValue> { @Override public MicroProfileCustomValue convert(String value) { final int secretNumber; if (value.startsFrom("OBF:")) { secretNumber = Integer.valueOf(SecretDecoder.decode(value)); } else { secretNumber = Integer.valueOf(value); } return new MicroProfileCustomValue(secretNumber); } }
NoteIf you add a new converter, you must list it in the
META-INF/services/org.eclipse.microprofile.config.spi.Converter
service file.