© Maxim Gaigul/Shutterstock.com
Spring Boot: Die Magie verstehen - Teil 2

Externalized Configuration


Eine Anwendung soll sich während der Entwicklung mit der lokalen Datenbank, in der Produktion jedoch mit einer anderen Datenbank verbinden. Bei klassischen Java-EE-Anwendungen wird auf die Mittel eines Application Servers zurückgegriffen, um diese Verbindungen zu konfigurieren. Spring Boot bietet hierfür das „Externalized Configuration“-Konzept.

Nehmen wir ein ganz konkretes Beispiel. Eine Spring-Boot-Webapplikation startet den eingebetteten Application Server üblicherweise mit dem Port 8080. Es ist jedoch nicht unüblich, dass der Port geändert werden muss – beispielsweise, weil bereits eine andere Applikation auf Port 8080 lauscht. Bei Spring Boot ist es sehr einfach, den Port zu ändern, indem man die server.port Property auf den Wert 7081 setzt. Damit sehen wir bereits ein wichtiges Element der Spring-Boot-Konfiguration: Die Konfiguration basiert auf Properties – einfachen Key-Value-Paaren.

Spring Boot bietet eine Vielzahl verschiedener Möglichkeiten, wo die Property angegeben werden kann. Beispielsweise können Umgebungsvariablen, Kommandozeilenparameter, Properties-Dateien und YAML-Dateien genutzt werden. Aber auch Quellen wie z. B. JNDI oder der Servlet Context sind möglich.

Experimentieren wir mit den wichtigsten Möglichkeiten, eine Konfiguration vorzunehmen. Als Basis für die Experimente dient die Spring-Boot-Applikation aus Listing 1. Das vollständige Codebeispiel findet sich im GitHub Repository [1].

Listing 1

@SpringBootApplication public class SpringEnvironmentExplorationApplication { public static void main(String[] args) { final ConfigurableApplicationContext context = SpringApplication.run(SpringEnvironmentExplorationApplication.class, args); PrintUtil.printCaption("Spring Environment Exploration"); final ConfigurableEnvironment environment = context.getEnvironment(); PrintUtil.printKeyValue("server.port", environment.getProperty("server.port")); // print all currently activated profiles PrintUtil.printKeyValue("active profiles:", environment.getActi...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang