Installation
Ajoutez Ravel à votre pom.xml :
<dependencies>
<dependency>
<groupId>io.vidocq.ravel</groupId>
<artifactId>ravel-api</artifactId>
<version>0.1.0-SNAPSHOT</version>
</dependency>
</dependencies>
Pour l’intégration CDI (optionnel), ajoutez également :
<dependency>
<groupId>io.vidocq.ravel</groupId>
<artifactId>ravel-cdi-vauban</artifactId>
<version>0.1.0-SNAPSHOT</version>
</dependency>
Première lecture de configuration
La façon la plus simple de commencer est d’utiliser ConfigProvider :
import org.eclipse.microprofile.config.ConfigProvider;
import org.eclipse.microprofile.config.Config;
public class Main {
public static void main(String[] args) {
Config config = ConfigProvider.getConfig();
// Récupérer une valeur de chaîne requise
String appName = config.getValue("app.name", String.class);
System.out.println("App: " + appName);
// Récupérer une valeur optionnelle
Optional<String> appVersion = config.getOptionalValue("app.version", String.class);
System.out.println("Version: " + appVersion.orElse("1.0.0"));
// Récupérer un entier
int port = config.getValue("app.port", Integer.class);
System.out.println("Port: " + port);
}
}
Sources de configuration
Ravel cherche la configuration dans cet ordre (ordinal décroissant) :
-
Propriétés système (ordinal 400) — défini via
-Dkey=value -
Variables d’environnement (ordinal 300) —
PATH,USER, etc., automatiquement traduites en clés de config -
microprofile-config.properties(ordinal 100) — fichier dansMETA-INF/du classpath
Propriétés système
java -Dapp.name="My App" -Dapp.port=8080 MyApplication
Config config = ConfigProvider.getConfig();
String appName = config.getValue("app.name", String.class);
// Résultat : "My App"
Variables d’environnement
export APP_NAME="My App"
export APP_PORT=8080
java MyApplication
Ravel mappe automatiquement :
- APP_NAME → app.name
- APP_PORT → app.port
- my_property → my.property
Config config = ConfigProvider.getConfig();
String appName = config.getValue("app.name", String.class);
// Résultat : "My App"
Conversion de types
Ravel supporte de nombreux types built-in :
Config config = ConfigProvider.getConfig();
// Primitifs et boxés
int port = config.getValue("app.port", int.class);
Integer portBox = config.getValue("app.port", Integer.class);
// Collections
List<String> items = config.getValue("app.items", List.class);
Set<Integer> ids = config.getValue("app.ids", Set.class);
// Types temporels
Duration timeout = config.getValue("app.timeout", Duration.class);
LocalDate startDate = config.getValue("app.start", LocalDate.class);
// Types personnalisés
MyCustomType value = config.getValue("app.custom", MyCustomType.class);
Voir Convertisseurs de types pour la liste complète des convertisseurs built-in.
Expressions de propriété
Utilisez ${key} pour référencer d’autres propriétés :
app.name=MyApp
app.full.name=${app.name} v2.0
String fullName = config.getValue("app.full.name", String.class);
// Résultat : "MyApp v2.0"
Utilisez ${key:default} pour fournir un repli :
app.full.name=${app.name} ${app.version:1.0.0}
Voir Expressions de propriété pour plus de détails.
Profils de configuration
Utilisez des préfixes pour basculer la configuration par environnement :
app.name=MyApp
app.debug=false
# Surcharges de développement
%dev.app.debug=true
%dev.app.port=9000
# Surcharges de production
%prod.app.port=8443
%prod.app.debug=false
Activez le profil dev :
java -Dmp.config.profile=dev MyApplication
Voir Profils de configuration pour plus de détails.
Étapes suivantes
-
Internes — comprendre la conception
-
Sources de configuration — sources personnalisées via SPI
-
Intégration CDI — utiliser
@ConfigProperty