Java · Experte
Structured Task Scope (Preview in Java 21+) behandelt Gruppen zusammengehöriger Aufgaben, die in verschiedenen Threads laufen, als eine einzige Arbeitseinheit. ShutdownOnFailure stellt sicher, dass…
Async & ConcurrencyBest Practices
Snippet öffnen →Java · Experte
StampedLock bietet einen 'optimistischen' Modus, bei dem keine echte Sperre gesetzt wird. Stattdessen wird ein 'Stamp' zurückgegeben, der später validiert werden muss. Falls während des Lesens ein…
PerformanceAsync & Concurrency
Snippet öffnen →Java · Experte
MethodHandles sind der Kernmechanismus hinter 'invokedynamic'. Sie bieten eine performantere und typsicherere Alternative zur klassischen Reflection. Sobald ein MethodHandle verknüpft ist, kann die…
PerformanceOOP
Snippet öffnen →Java · Experte
VarHandles bieten einen Standardweg für atomare Operationen und Memory Fencing. 'setRelease' stellt sicher, dass alle vorherigen Schreibvorgänge im aktuellen Thread für andere Threads sichtbar sind…
PerformanceAsync & Concurrency
Snippet öffnen →Java · Experte
Die Foreign Function & Memory (FFM) API (Java 22+) bietet einen sicheren und effizienten Weg, auf Speicher außerhalb des Java-Heaps zuzugreifen. Im Gegensatz zu ByteBuffer nutzt sie 'Arenas' für ei…
Memory ManagementPerformance
Snippet öffnen →Java · Experte
Record Patterns (Java 21) ermöglichen die tiefe Dekonstruktion komplexer Datenstrukturen direkt innerhalb von 'instanceof'- oder 'switch'-Anweisungen. Dies eliminiert Boilerplate-Casts und Accessor…
SyntaxOOPBest Practices
Snippet öffnen →Java · Experte
Die StackWalker-API ist eine performanceorientierte Methode zur Inspektion des Call-Stacks. Im Gegensatz zu Throwable.getStackTrace() bietet sie einen Stream-basierten Ansatz, der nur die benötigte…
PerformanceFehlerbehandlungBest Practices
Snippet öffnen →Java · Experte
Scoped Values (JEP 446) bieten eine moderne, threadsichere Alternative zu ThreadLocal. Sie wurden speziell für virtuelle Threads entwickelt und ermöglichen das effiziente, unveränderliche Teilen vo…
Async & ConcurrencyMemory ManagementBest Practices
Snippet öffnen →Java · Experte
Virtuelle Threads können an ihren Carrier-Plattform-Thread 'gepinnt' werden, wenn sie innerhalb eines 'synchronized'-Blocks blockieren. Um hohen Durchsatz und Skalierbarkeit zu erhalten, sollten En…
Async & ConcurrencyPerformanceBest Practices
Snippet öffnen →Java · Expertespring
Das Condition-Interface von Spring ermöglicht eine anspruchsvolle, programmatische Logik für die Bean-Registrierung basierend auf Umgebungseigenschaften, dem Vorhandensein von Klassen oder existier…
FrameworksDesign Patterns
Snippet öffnen →Java · Expertespring
DeferredResult wird verwendet, um den Web-Container-Thread freizugeben, während lang laufende Aufgaben in einem separaten Thread verarbeitet werden. Dies verbessert die Skalierbarkeit und den Durch…
Async & ConcurrencyPerformance
Snippet öffnen →Java · Expertespring
Über die einfache Feldvalidierung hinaus unterstützt Spring Class-Level-Constraints via ConstraintValidator. Dies ermöglicht komplexe Validierungslogik, die mehrere Felder innerhalb eines Objekts e…
FehlerbehandlungBest Practices
Snippet öffnen →Java · Expertespring
Spring Security ermöglicht eine feingranulare Zugriffskontrolle mithilfe der Spring Expression Language (SpEL). Durch Referenzierung benutzerdefinierter Beans in @PreAuthorize können komplexe Autor…
SecurityFrameworks
Snippet öffnen →Java · Expertespring
In Spring WebFlux reicht @ControllerAdvice oft nicht aus, wenn Fehler außerhalb des Controller-Kontexts auftreten. Die Erweiterung von AbstractErrorWebExceptionHandler ermöglicht eine low-level, ni…
FrameworksFehlerbehandlungAsync & Concurrency
Snippet öffnen →Java · Expertespring
Optimistisches Locking verhindert 'Lost Updates' in nebenläufigen Umgebungen. Das @Version-Feld wird von Hibernate bei Updates automatisch geprüft; falls sich die Version in der Datenbank geändert…
FrameworksDesign PatternsBest Practices
Snippet öffnen →Java · Expertespring
Springs @Transactional basiert auf AOP-Proxies. Der direkte Aufruf einer transaktionalen Methode innerhalb derselben Klasse umgeht den Proxy. Die Nutzung von ObjectProvider zur Selbst-Injektion ste…
FrameworksOOPBest Practices
Snippet öffnen →Java · Expertespring
Für komplexe API-Versionierung (z.B. über Header) ermöglicht die Implementierung von RequestCondition das Einklinken eigener Matching-Logik direkt in das RequestMappingHandlerMapping von Spring MVC.
FrameworksDesign PatternsSyntax
Snippet öffnen →Java · Expertespring
Um sicherzustellen, dass externe Seiteneffekte (wie E-Mails) nur auftreten, wenn eine Transaktion erfolgreich committet wurde, verwendet man @TransactionalEventListener mit der Phase AFTER_COMMIT.
FrameworksDesign PatternsAsync & Concurrency
Snippet öffnen →Java · Expertespring
Fortgeschrittene Spring Security nutzt mehrere SecurityFilterChain-Beans mit spezifischen RequestMatchern. Dies ermöglicht die dynamische Anwendung unterschiedlicher Sicherheitsrichtlinien basieren…
SecurityFrameworksDesign Patterns
Snippet öffnen →Java · Expertespring
Durch die Implementierung der PropertySourceFactory kann der Prozess des Ladens der Konfiguration abgefangen werden. Dies ermöglicht fortgeschrittene Patterns wie das Entschlüsseln von Geheimnissen…
SecurityFrameworksBest Practices
Snippet öffnen →Java · Expertespring
Benutzerdefinierte Scopes ermöglichen es Entwicklern, Bean-Lebenszyklen über 'singleton' oder 'prototype' hinaus zu verwalten. Ein ThreadScope ist ein Experten-Pattern für Hochverfügbarkeitsszenari…
FrameworksMemory ManagementDesign Patterns
Snippet öffnen →Java · Expertespring
ImportBeanDefinitionRegistrar bietet Low-Level-Zugriff auf die BeanDefinitionRegistry. Es wird für die Metaprogrammierung verwendet, bei der Beans dynamisch basierend auf Annotationen oder Classpat…
FrameworksOOPBest Practices
Snippet öffnen →Java · Expertespring
GenericConverter ist die flexibelste Schnittstelle in Springs Konvertierungssystem. Im Gegensatz zu einfachen Convertern bietet sie TypeDescriptors, was Logik ermöglicht, die von Generics oder Anno…
FrameworksDatentypenPerformance
Snippet öffnen →Java · Expertespring
AbstractRoutingDataSource ermöglicht den Wechsel zwischen mehreren physischen Datenquellen zur Laufzeit basierend auf einem Lookup-Schlüssel, der normalerweise in einem ThreadLocal-Kontext gespeich…
Design PatternsFrameworksPerformance
Snippet öffnen →Java · Expertespring
Die Nutzung von Java 21+ Virtual Threads in Spring Boot 3.2+ ermöglicht es der Anwendung, Tausende gleichzeitiger blockierender Verbindungen ohne den Speicher-Overhead von Plattform-Threads zu vera…
Async & ConcurrencyPerformanceFrameworks
Snippet öffnen →Java · Expertespring
ExchangeFilterFunctions fungieren als Interceptoren für den WebClient und ermöglichen die Implementierung übergreifender Aspekte wie Logging, Retries oder Auth-Token-Injektion für alle ausgehenden…
FrameworksFehlerbehandlungAsync & Concurrency
Snippet öffnen →Java · Expertespring
HandlerInterceptor bieten eine Möglichkeit, Logik anzuwenden, bevor sie den Controller erreicht, aber nach der Servlet-Filter-Kette. Dies ist ideal für Logik, die Kenntnisse über den Spring-Handler…
FrameworksSecurityPerformance
Snippet öffnen →Java · Expertespring
Das SmartLifecycle-Interface ermöglicht es Komponenten, am Lebenszyklus des ApplicationContext teilzunehmen. Es bietet eine feingliedrige Kontrolle über die Reihenfolge, in der Beans starten und st…
FrameworksBest Practices
Snippet öffnen →Java · Expertespring
BeanPostProcessoren ermöglichen die benutzerdefinierte Modifikation neuer Bean-Instanzen. Dieses Experten-Pattern wird verwendet, um Beans in Proxys zu kapseln, zusätzliches Verhalten zu injizieren…
FrameworksDesign PatternsOOP
Snippet öffnen →Java · Expertespring
Bei der Verwendung von @Async gehen ThreadLocal-Variablen wie der MDC verloren. Ein TaskDecorator ermöglicht es, den Kontext vom aufrufenden Thread zu erfassen und auf den Ausführungsthread anzuwen…
Async & ConcurrencyFrameworksBest Practices
Snippet öffnen →