Konfiguration von Spring-Anwendungen

Konfiguration von Spring-Anwendungen

Die Konfiguration von Spring-Anwendungen ist ein elementarer Bestandteil des Frameworks. Damit können auch komplexeste Anforderungen in produktiven Anwendungen umgesetzt werden.

Berücksichtigt werden dabei die folgenden Features:

  • Die eigentliche Konfiguration der Anwendung
  • Die Konfiguration der Laufzeitumgebung sowie deren Überwachung
  • Die Unterstützung verschiedener Profile der Anwendung.

Konfiguration der Anwendung

Bei Spring Boot-Anwendungen wird hierzu automatisch eine Konfigurationsdatei geladen. Dabei werden simple Properties-Dateien (die application.properties)   oder YAML-Dateien (application.yml) unterstützt.

isbngenerator.prefix=ISBN:
isbngenerator.countryCode=-dk

Innerhalb der Anwendung werden Properties mit der @Value-Annotation definiert. Diese lesen über eine Spring Expression einen Wert aus der Konfigurationsdatei:

public class RandomIsbnGenerator implements IsbnGenerator {

	@Value("${isbngenerator.prefix}")
	private String prefix;
	@Value("${isbngenerator.countryCode}")
        private String countryCode;

Profiles

Mit Profiles werden unterschiedliche Stages der Anwendung konfiguriert. Dabei kann jegliche Konfiguration (XML, Annotations oder Java Config) zusätzlich mit der @Profile-Annotation einem benannten Profil zugeordnet werden.

Profile werden innerhalb der Konfiguration oder durch einen Aufruf-Parameter der Anwendung aktiviert.

Die oben bereits angesprochenen Konfigurations-Dateien werden automatisch mit Profiles ergänzt. Existiert beispielsweise ein Profile namens “test”, so wirde neben der application.properties-Datei auch eineapplication-test.propertiesgelesen.

Konfiguration der Laufzeitumgebung

Auch die Laufzeitumgebung der Anwendung kann konsequent in der application-Konfiguration erfolgen. Beispiele hierfür sind

  • Logging
  • Datenbank-URLs
  • Server-Ports
  • Aktive Profile

Im Folgenden Beispiel ist eine Konfiguration für Logging gegeben. Weiterhin wird das aktive Profile gesetzt:

logging.level.root=INFO
logging.pattern.console= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
spring.profiles.active=test

 

Setup für Test-Datenbanken

Wird eine Spring-Boot-Anwendung mit einer Datenbank-Anbindung konfiguriert, so können automatisch Skripte zur Schema-Erstellung sowie zum initialen Befüllen der Tabellen ausgeführt werden. Diese Dateien sind die schema.sql bzw. die data.sql.

Beispiel: Eine schema.sql

create table AUDIT (auditmessage varchar(2048))
create table ISBNCOUNTER (counter integer)

Beispiel: Eine data.sql

insert into ISBNCOUNTER values(1)

Auch hier ist wiederum eine Unterscheidung verschiedener Stages möglich. Dies wird jedoch nicht über ein Profil geregelt sonder durch den Eintrag einer Platform in der Anwendungs-Konfiguration. Die folgende Konfiguration zeigt eine komplette Datenbank-Konfiguration für eine Test-Datenbank:

spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.username=sa
spring.datasource.password=sa
spring.datasource.platform=test
spring.jpa.hibernate.ddl-auto=create

 

Gelesen werden dann die beiden Dateienschema-test.sqlund data-test.sql.

Der Spring Konfigurationsserver

In einer Cloud-basierten Lösung können die Konfigurationsdateien von einem zentralen Server, dem Spring Cloud Config Server, geliefert werden. Die Standard-Implementierung des Spring-Cloud-Projekts liest die Konfigurationswerte einfach aus einem Git-Repository. Werden Änderungen in die Versionsverwaltung gepushed so wird damit die Anwendung neu konfiguriert. Eine wirklich interessante Lösung! Selbstverständlich können die Konfigurationen aber auch klassisch in einer Datenbank oder dem Dateisystem abgelegt werden.


Seminar zum Thema

Dr. Rainer Sawitzki / Dr. Rainer Sawitzki

Nach seinem Studium der Physik und anschließender Promotion Wechsel in die IT-Branche. Seit mehr als 20 Jahren als Entwickler, Berater und Projektleiter vorwiegend im Bereich Java und JavaScript unterwegs. Parallel dazu in der Entwicklung und Durchführung von hochwertigen Seminaren für die Integrata im Einsatz.

Schreibe einen Kommentar