Automatisches Ressourcen-Management
Die try-with-resources Anweisung stellt sicher, dass jede Ressource am Ende der Anweisung geschlossen wird, was Speicherlecks und Ressourcenerschöpfung verhindert.
Snippet öffnen →Lies diese Java-Snippets für Fortgeschrittene Zeile für Zeile — jedes kommt mit einer Erklärung, was der Code tut und warum.
Die try-with-resources Anweisung stellt sicher, dass jede Ressource am Ende der Anweisung geschlossen wird, was Speicherlecks und Ressourcenerschöpfung verhindert.
Snippet öffnen →Records sind eine spezielle Art von Klasse, die als transparenter Träger für unveränderliche Daten dient und automatisch Konstruktoren, Accessoren, equals und hashCode generiert.
Snippet öffnen →Die Optional-Klasse ist ein Container-Objekt, das das Vorhandensein oder Fehlen eines Wertes darstellt und hilft, NullPointerExceptions zu vermeiden.
Snippet öffnen →Streams ermöglichen funktionale Operationen auf Elementfolgen, wie das effiziente Filtern, Mapping und Reduzieren von Collections.
Snippet öffnen →Funktionale Schnittstellen enthalten genau eine abstrakte Methode und können mittels Lambda-Ausdrücken implementiert werden, um eine prägnante Darstellung anonymer Funktionen zu ermöglichen.
Snippet öffnen →In Java können Enums abstrakte Methoden haben, die jede Konstante implementieren muss. Dies setzt das Strategy-Entwurfsmuster effektiv um und ermöglicht es, verschiedene Verhaltensweisen mit versch…
Snippet öffnen →Obere Schranken bei Wildcards (? extends T) erlauben es einer Collection, Objekte vom Typ T oder dessen Unterklassen zu enthalten. Dies ist nützlich, um Daten aus einer Collection zu lesen und dabe…
Snippet öffnen →Eigene Annotationen ermöglichen es, Metadaten zum Code hinzuzufügen, die zur Laufzeit mittels Reflection verarbeitet werden können. Dies wird oft von Frameworks für Querschnittsaufgaben wie Logging…
Snippet öffnen →Exception-Chaining ermöglicht es, eine Low-Level-Exception (wie IOException) in eine Business-Exception auf höherer Ebene zu verpacken, während die ursprüngliche Ursache erhalten bleibt. Dies bewah…
Snippet öffnen →Das Schlüsselwort volatile stellt sicher, dass Änderungen an einer Variablen sofort für alle Threads sichtbar sind. Es verhindert, dass Threads die Variable lokal zwischenspeichern, sodass sie imme…
Snippet öffnen →Die Verwendung von @ControllerAdvice ermöglicht es, Ausnahmen in der gesamten Anwendung an einer zentralen Stelle zu behandeln. Dies trennt die Fehlerlogik von der Geschäftslogik.
Snippet öffnen →Die @Async-Annotation ermöglicht es einer Methode, in einem separaten Thread ausgeführt zu werden. Die Rückgabe eines CompletableFuture erlaubt es dem Aufrufer, das Ergebnis später zu verfolgen.
Snippet öffnen →Konstruktor-Injektion ist der bevorzugte Weg, um Abhängigkeiten in Spring zu verwalten. Sie stellt sicher, dass erforderliche Abhängigkeiten vorhanden sind und ermöglicht 'final' Felder.
Snippet öffnen →MockMvc ermöglicht es Ihnen, Spring MVC-Controller zu testen, ohne einen vollständigen HTTP-Server zu starten. Es bietet eine DSL zum Ausführen von Anfragen und Überprüfen von Ergebnissen.
Snippet öffnen →Das @PreAuthorize-Annotation von Spring Security ermöglicht es, Zugriffskontrollregeln direkt an Methoden unter Verwendung von SpEL (Spring Expression Language) zu definieren.
Snippet öffnen →Eigene Constraints ermöglichen es, die Validierungsfunktionen von Spring durch selbst definierte Annotationen zu erweitern. Dies ist nützlich für komplexe Geschäftsregeln, die nicht durch Standard-…
Snippet öffnen →Propagation.REQUIRES_NEW erstellt eine separate Transaktion, die unabhängig von der Transaktion des Aufrufers ist. Wenn die Transaktion des Aufrufers zurückgerollt wird, wird diese dennoch committe…
Snippet öffnen →Die Spring-Cache-Abstraktion ermöglicht es, teure Operationen transparent zwischenzuspeichern. Nachfolgende Aufrufe mit derselben ID geben den Cache-Wert zurück, anstatt den Methodenkörper erneut a…
Snippet öffnen →JPA Specifications ermöglichen es, dynamische und wiederverwendbare Abfragen mit der Criteria API zu erstellen. Dies ist wesentlich flexibler als das Schreiben vieler Repository-Methoden für jede F…
Snippet öffnen →Bedingte Beans ermöglichen es Ihrer Anwendung, ihre Konfiguration basierend auf Umgebungsvariablen oder Eigenschaftsdateien anzupassen. Dies ist essenziell für die Unterstützung verschiedener Cloud…
Snippet öffnen →Benutzerdefinierte Health-Indikatoren ermöglichen es, den Status externer Abhängigkeiten wie APIs oder Datenbanken zusätzlich zu den Standard-Checks von Spring Boot zu überwachen. Diese Stati werde…
Snippet öffnen →Ein HandlerInterceptor ermöglicht die Ausführung von Logik, bevor oder nachdem eine Anfrage einen Controller erreicht. Dies ist ideal für Logging, Authentifizierungsprüfungen oder das Hinzufügen ge…
Snippet öffnen →Application Events fördern die lose Kopplung zwischen Komponenten. Anstatt einen E-Mail-Dienst direkt aus einem Registrierungsdienst aufzurufen, veröffentlichen Sie ein Event, das interessierte Lis…
Snippet öffnen →Projektionen ermöglichen es, nur bestimmte Felder aus der Datenbank abzurufen, anstatt ganze Entitäten zu laden. Dies reduziert den Speicherverbrauch und verbessert die Datenbankleistung, indem nur…
Snippet öffnen →Entity Listener ermöglichen die Ausführung von Logik zu bestimmten Zeitpunkten im Lebenszyklus einer JPA-Entität, wie z. B. vor dem Speichern oder nach dem Laden, ohne die Entitätsklasse selbst zu…
Snippet öffnen →Eigene Argument-Resolver ermöglichen das automatische Injizieren komplexer Objekte in Controller-Methoden basierend auf Anfragedaten wie Headern oder Session-Attributen. Dies hält die Controller sa…
Snippet öffnen →AOP ermöglicht die Trennung von übergreifenden Belangen wie Logging oder Zeitmessung von der eigentlichen Geschäftslogik. Mit dem @Around-Advice können Sie Methodenaufrufe abfangen, Logik davor und…
Snippet öffnen →@ConfigurationProperties bietet eine typsichere Möglichkeit, externe Eigenschaften (z.B. aus der application.yml) auf Java-Objekte abzubilden. Dies ist der Verwendung von @Value überlegen, da es hi…
Snippet öffnen →Interceptors im RestTemplate ermöglichen es, Logik global auf alle ausgehenden HTTP-Anfragen anzuwenden. Dies ist ideal, um Authentifizierungs-Token hinzuzufügen, Request-Payloads zu loggen oder be…
Snippet öffnen →@JsonView ermöglicht es zu steuern, welche Felder eines Objekts je nach Kontext in JSON serialisiert werden. Sie können Marker-Interfaces definieren, um 'Views' zu erstellen (z.B. Public vs. Admin)…
Snippet öffnen →