GEDOPLAN

MicroProfile 4: Config

Alle

Seit den vergangenen Posts zum Thema MicroProfile ist einiges passiert. MicroProfile 4 ist releast (Aktuelle Version 4.1 vom Juli 2021). Das umfasst auch MP Config 2.0 mit einigen Änderungen zu damals beschriebenen Version 1.4.

Die Grundlagen aus Welche Einstellung haben Sie? Anwendungskonfiguration mit MicroProfile Config sind natürlich immer noch gültig. Zwei neue Features möchte ich im Folgenden kurz beschreiben.

Configuration Profiles

In verschiedenen Stages haben Anwendungen i. A. unterschiedliche Einstellungen. MP Config bietet dazu Configuration Profiles an, von denen eines mit der Property mp.config.profile aktiviert werden kann. Die davon betroffenen Config Properties können entweder mit einem Präfix benannt werden (z. B. %dev.database) oder in separaten Properties-Dateien eingetragen werden (z. B. META-INF/microprofile-config-test.properties).

Nehmen wir an, wir hätten diese beiden Konfigurationsdateien:

# META-INF/microprofile-config.properties
database: postgres
%dev.database: h2
# META-INF/microprofile-config-test.properties
database: derby

Dazu denken wir uns noch eine Variable, die per Injektion den Konfigurationswert namens database zugewiesen bekommt:

@Inject
@ConfigProperty(name = "database")
String database;

Normalerweise wäre der Wert nun postgres, im Profil dev jedoch h2 und im Profil test derby. Das Profil kann bspw. beim Start der Anwendung durch Angabe der System Property mp.config.profile ausgewählt werden:

java -Dmp.config.profile=test -jar …

Property Expressions

In den Konfigurationdateien META-INF/microprofile-config[-profile].properties
dürfen nun Properties im Wert einer anderen Property verwendet werden, und zwar mehrfach, eingeschachtelt oder auch mit Default-Wert. Auch dazu ein kleines Beispiel:

META-INF/microprofile-config.properties
server.url=http://${server.host:example.org}:${server.port}/${server.endpoint}
server.port=8080
server.endpoint=${server.endpoint.path.${server.endpoint.name:foo}}
server.endpoint.path.foo=api/foo
server.endpoint.path.bar=api/bar

Unter der Annahme, dass keine der aufgeführten Properties durch andere Config Sources mit Werten belegt wird, hätte die Property server.url den Wert http://example.org:8080/api/foo.

Weitere Informationen

Wir versorgen Sie gerne mit weiterem Input:

Dirk Weil, GEDOPLAN GmbH

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Schulungen mit der selben Kategorie:

Blogkategorie: Alle
Es wurden keine Ergebnisse gefunden.

weitere Artikel

Kontakt

Brauchen Sie eine individuelle IT-Schulung, eine fundierte Beratung oder eine individuelle Softwareentwicklung? Dann sind Sie hier genau richtig!

Tim Neumann

Geschäftsleitung

GEDOPLAN GmbH
Stieghorster Straße 60
33605 Bielefeld

GEDOPLAN GmbH
Kantstraße 164
10623 Berlin

    Kontakt

    Tim Neumann

    Geschäftsleitung

    GEDOPLAN GmbH
    Stieghorster Straße 60
    33605 Bielefeld

    GEDOPLAN GmbH
    Kantstraße 164
    10623 Berlin

    Brauchen Sie eine individuelle IT-Schulung, eine fundierte Beratung oder eine individuelle Softwareentwicklung? Dann sind Sie hier genau richtig!