RSS Frühling

Frühling ist ein leistungsfähiges Werkzeugset, das für den Bau von Webanwendungen konzipiert wurde, um sie schnell und effizient zu erstellen. Es ermöglicht Entwicklern, Unternehmensanwendungen auf einfache und erweiterbare Weise zu erstellen, indem sie ein simples und erweiterbares Verfahren zum Schreiben von Code verwenden. Das Spring-Framework erleichtert die Verwendung von Java oder anderen Sprachen, um Anwendungen zu erstellen und auf jedem Typ von Schicht-Server bereitzustellen, ob es ein HTTP-Server oder ein Anwendungsserver ist. Spring hat sich in einer Vielzahl von Umgebungen bewährt und bringt in kleinen und großen Teams eine Vielzahl von Aufgaben näher. Das Framework bietet verschiedene Module, die separat oder gemeinsam verwendet werden können, um Unternehmensanwendungen zu erstellen, Flexibilität und Einfachheit in den Entwicklungsprozess zu bringen. Die offizielle Spring-Website bietet eine Vielzahl von Ressourcen und Tools wie Dokumentation, Tutorials, Schulungen, Beispiele, die Entwicklern helfen, loszulegen und das Framework zu meistern. Die Website enthält auch die neuesten Release-Notes, Updates und ein Community-Bereich, in dem Entwickler Ideen teilen, Unterstützung erhalten oder zum Projekt beitragen können.

Notizfaden

Apache Kafka 4.0.0 führt Share Groups als neues Konsumtionsmodell neben den traditionellen Consumer Groups ein. Share Groups verteilen einzelne Records, nicht ganze Partitionen, und bieten so eine Verteilung auf Record-Ebene für erhöhte Flexibilität. Dies unterscheidet sich von traditionellen Consumer Groups, bei denen Partitionen bestimmten Consumern zugewiesen werden, wodurch die Reihenfolge innerhalb dieser Partitionen garantiert wird. Share Groups sind ideal für volumenstarke, unabhängige Events, bei denen der Durchsatz vor der Reihenfolge priorisiert wird. Sie bieten auch Vorteile bei der dynamischen Skalierung für Workloads mit variablem Bedarf. Traditionelle Consumer Groups bleiben unerlässlich, wenn die Reihenfolge der Verarbeitung kritisch ist oder für zustandsbehaftete Verarbeitung, die eine Partitionsaffinität erfordert. In Share Groups verwaltet ein Broker-Level Share Coordinator die Record-Verteilung. Records werden von Consumern mit einem zeitbasierten Lock erworben und automatisch an den Pool zurückgegeben, wenn sie nicht innerhalb des Timeouts bestätigt werden. Consumer können Records als ACCEPT, RELEASE zum Wiederholen oder REJECT für dauerhaftes Scheitern bestätigen. Der Broker verfolgt Zustellversuche und archiviert Nachrichten automatisch nach einem konfigurierten Limit, um vor Poison Messages zu schützen. Spring for Apache Kafka 4.0.0 unterstützt Share Groups vollständig und bietet sowohl programmatische Containererstellung als auch Annotation-gesteuerte @KafkaListener-Setups. Die Konfiguration einer ShareConsumerFactory und ShareKafkaListenerContainerFactory ist erforderlich. Sowohl implizite als auch explizite Bestätigungsmodi werden unterstützt. Die implizite Bestätigung akzeptiert automatisch bei erfolgreichem Methodenabschluss und lehnt bei Ausnahmen ab, während die explizite Bestätigung eine detaillierte Steuerung mithilfe eines ShareAcknowledgment-Parameters ermöglicht. Die explizite Bestätigung erfordert jedoch, dass alle Records bestätigt werden, bevor neue Records abgefragt werden können. Share Groups ermöglichen auch die Skalierung mit Parallelität innerhalb eines einzelnen Containers, sodass mehrere Consumer-Threads Records parallel verarbeiten können.
Das Spring Framework führt in Spring Boot 4 und verwandten Projekten Unterstützung für Jackson 3, die neueste Version der beliebten JVM-JSON-Bibliothek, ein. Dieses bedeutende Update folgt auf die Veröffentlichung von Jackson 3.0.0 GA und baut auf früheren Verbesserungen der Jackson-Integration auf. Die Spring- und Jackson-Teams arbeiteten während der Release-Candidate-Phase von Jackson 3 eng zusammen, was zu mehreren Verfeinerungen führte. Dazu gehören die Ermöglichung der Koexistenz von Jackson 2 und 3, eine JDK 17-Basis, abgestimmte Standardeinstellungen für JSON-Ansichten sowie verbesserte Nullsicherheit und nicht-blockierende Parser-Fähigkeiten. Spring Boot 4 wird die Abhängigkeitsverwaltung für beide Jackson-Versionen bereitstellen, aber nur für Jackson 3 automatisch konfigurieren, wodurch es zum Standard wird. Es wird empfohlen, Anwendungen zu migrieren, um Jackson 3 zu übernehmen, obwohl die vorübergehende Verwendung von Jackson 2 mit einigen manuellen Konfigurationen möglich ist. Wichtige Migrationsschritte umfassen die Aktualisierung der Paketnamen von `com.fasterxml.jackson` auf `tools.jackson` und die Anpassung an neue Standardeinstellungen in Jackson 3, wie z. B. alphabetische Sortierung von Eigenschaften und Datumsformatierung. Die Einführung eines unveränderlichen `JsonMapper` in Jackson 3 ersetzt den veränderlichen `ObjectMapper` aus Jackson 2 und vereinfacht die Konfiguration mit `JsonMapper.Builder`. Der veraltete `MappingJackson2HttpMessageConverter` wird durch einen leistungsfähigeren `JacksonJsonHttpMessageConverter` ersetzt, der Serialisierungshinweise direkt verwendet und somit Wrapper wie `MappingJacksonValue` überflüssig macht. Spring Security 7.0 wird ebenfalls Jackson 3 unterstützen und die Sicherheit durch Deaktivierung der standardmäßigen globalen Typisierung und Einführung eines `PolymorphicTypeValidator` verbessern. Spring Data 4.0 bringt vollständige Jackson 3-Unterstützung über seine Module hinweg, obwohl einige, wie Spring Data REST und Spring HATEOAS, eine vollständige Migration zu Jackson 3 erfordern werden.
Das Model Context Protocol (MCP) ist ein sich schnell entwickelnder Standard in der KI-Welt. Spring AI hat ein neues Projekt, mcp-security, gestartet, um die Sicherheitsanforderungen von Spring-Benutzern zu erfüllen. Dieses Projekt bietet Unterstützung für die Absicherung von MCP-Servern mit OAuth 2 und API-Schlüsseln. Die neueste Version der MCP-Spezifikation gewinnt zunehmend Unterstützung im Ökosystem. Über HTTP exponierte MCP-Server müssen gemäß der MCP-Spezifikation mit OAuth 2-Zugriffstoken gesichert werden. Aufrufe an einen MCP-Server erfordern einen Authorization-Header mit einem Bearer-Token. Der MCP-Server muss die Autorisierungsserver, denen er für den Token-Erwerb vertraut, explizit bewerben. Spring AI lässt sich nahtlos in OAuth 2-Ressourcenserver integrieren, sodass Anwendungen bestehende Autorisierungsserver wie Okta oder GitHub nutzen können. Um einen MCP-Server mit OAuth 2 abzusichern, müssen Benutzer spezifische Abhängigkeiten zu ihren Spring AI-Anwendungen hinzufügen. Diese Abhängigkeiten ermöglichen die Funktionalität von OAuth 2-Ressourcenservern und MCP-spezifische Sicherheitseinstellungen. Anwendungseigenschaften werden dann verwendet, um den Namen des MCP-Servers, das Protokoll und die URL des Autorisierungsservers zu konfigurieren. Ein Beispielwerkzeug zeigt, wie Benutzerinformationen aus dem authentifizierten JWT-Token abgerufen werden. Eine Beispiel-Sicherheitskonfigurationsklasse, McpServerSecurityConfiguration, demonstriert, wie die Authentifizierung für alle Anfragen erzwungen und OAuth 2 für den MCP-Server konfiguriert wird. Diese Einrichtung ermöglicht es MCP-Clients, Autorisierungsserver dynamisch zu erkennen und zu nutzen. Spring Authorization Server kann auch so erstellt werden, dass er MCP-kompatibel ist und OAuth 2 Dynamic Client Registration sowie Resource Indicators unterstützt. Obwohl OAuth 2 der vorgeschriebene Sicherheitsmechanismus ist, unterstützt die MCP-Spezifikation auch die Authentifizierung auf Basis von API-Schlüsseln für Umgebungen, in denen keine OAuth 2-Infrastruktur vorhanden ist. Das mcp-security-Projekt erleichtert die Sicherheit von API-Schlüsseln, indem es benutzerdefinierte Header für die Authentifizierung zulässt. Dies beinhaltet das Hinzufügen spezifischer Abhängigkeiten für Spring Security und die Konfiguration eines API-Schlüssel-Repositorys. Der MCP-Server validiert dann den bereitgestellten API-Schlüssel, der typischerweise als X-API-key-Header gesendet wird. Das mcp-security-Projekt zielt darauf ab, die MCP-Sicherheit zu verbessern und bietet Dokumentation und Beispiele für die serverseitige und clientseitige Sicherheit. Beiträge und Feedback werden ermutigt, um die Sicherheitsfunktionen des Protokolls weiter zu verbessern. Das Projekt bietet auch Unterstützung für die clientseitige MCP-Sicherheit innerhalb von Spring AI und Spring Security.
CdXz5zHNQW_nl1kdOfOBY.png