Loading...

Die Assert Klasse von Spring: Der smarte Weg zur Validierung

Spring
6. September 2023
3 Minuten Lesezeit
Beitrag teilen:
Gefällt dir der Beitrag?
Du wirst den Newsletter lieben!

Es gibt viele Möglichkeiten, um sicherzustellen, dass dein Code tut, was er soll. Java hat sogar ein eingebautes assert Sprachfeature für genau diesen Zweck. Und dann gibt es in Spring noch die Assert-Klasse. Aber wieso sollte ich diese verwenden? In diesem Artikel tauchen wir tief in das Thema ein und entdecken die Vorteile der Verwendung dieser Klasse für die Validierung deiner Daten und Argumente.

Warum überhaupt Assertions nutzen?

Bevor wir in die Details der Spring Assert-Klasse eintauchen, sollten wir kurz die Bedeutung von Assertions klären. Assertions helfen uns dabei, die Korrektheit unseres Codes zur Laufzeit zu überprüfen. Sie sind ein wesentliches Werkzeug für Debugging und Testing. Dies ist besonders nützlich, wenn du mit mehreren Entwicklern an einem Projekt arbeitest und sicherstellen willst, dass die gelieferten Daten und Parameter den Erwartungen entsprechen. Sobald dies nicht der Fall ist, wollen wir unsere Anwendung beenden und eine Exception werfen.

Was macht die Spring Assert Klasse so besonders?

Die Spring Assert-Klasse bietet eine Fülle von statischen Methoden zur Überprüfung von Bedingungen. Das Besondere daran ist, dass diese Methoden mit einer klar definierten IllegalArgumentException oder einer anderen Runtime Exception reagieren. Diese Art der Exception macht die Fehlersuche einfacher und ist im Vergleich zu dem assert Sprachfeature von Java oder individuellen if-Statements weitaus ausdrucksvoller.

Vorteile gegenüber Java assert und if-Statements

Javas eingebautes assert ist weniger ausdrucksstark und wirft AssertionError, was es schwerer macht auf diese zu reagieren. Außerdem muss das assert Feature durch die Angabe eines extra Parameters beim Start der Anwendung aktiviert werden. Dadurch ist es möglich aus Versehen anderen Code auf verschiedenen Environments auszuführen. Die Fehler, die dadurch verursacht worden sind, sind schwer zu lokalisieren.

Wenn wir einfache if-Statements für die Validierung nutzen, wird der Code unübersichtlicher. Außerdem ist es wahrscheinlich, dass wir inkonsistent beim Werfen von Exceptions sind.

// Mit Java's assert
assert someVariable != null : "someVariable darf nicht null sein";

// Mit if-Statement
if (someVariable == null) {
    throw new IllegalArgumentException("someVariable darf nicht null sein");
}

Im Gegensatz dazu ist der Code mit der Spring Assert-Klasse kürzer und konsistent:

// Mit Spring Assert
Assert.notNull(someVariable, "someVariable darf nicht null sein");

Was uns Springs Assert Klasse alles liefert

Die Assert-Klasse beinhaltet für gängige Datentypen, deren häufig genutzten Validierungsmethoden.

Strings

Mit Methoden wie hasText() und hasLength() können wir Strings überprüfen. Du kannst damit sicherstellen, dass der String nicht nur nicht-null ist, sondern auch tatsächlichen Text enthält.

String name = "John";
Assert.hasText(name, "Name darf nicht leer sein");

Collections

Collections sind ein weiterer gängiger Datentyp, bei dem die Spring Assert Klasse glänzt. Die Methode notEmpty() ist ein hervorragendes Beispiel.

List<String> items = Arrays.asList("Apple", "Banana");
Assert.notEmpty(items, "Die Liste darf nicht leer sein");

Typüberprüfungen

Spring Assert bietet auch isInstanceOf() und isAssignable() Methoden zu Typüberprüfungen. Wenn du sicherstellen willst, dass ein Objekt einen bestimmten Typ hat, ist dies eine gute Möglichkeit.

Object animal = new Dog();
Assert.isInstanceOf(Dog.class, animal, "Das Tier muss ein Hund sein");

Nutze Spring Asserts, um Konsistent zu sein

Zugegeben: Die Assert-Klasse von Spring ist nichts Weltbewegendes. Aber die kleinen Vorteile, dass du konsistent im Werfen deiner Exceptions bist und ein paar Zeilen in deinem Code sparst, sprechen dafür, dass du die Klasse nutzen solltest. Sie bietet einen ausdrucksstarken, effizienten und leicht zu handhabenden Weg, um Daten und Argumenten zu validieren.

Schaue dir die Assert-Klasse an und entdecke welche Validierungen sie dir noch bietet.

Kennst du schon Marcus' Backend Newsletter?

Neue Ideen. Jede Woche!
Top