


Detaillierte Einführung in die von Spring 4 unterstützten Java8-Funktionen (Bild)
Spring Framework 4 unterstützt die Java 8-Sprache und die API-Funktionalität. In diesem Artikel konzentrieren wir uns auf die Unterstützung der neuen Java 8-Funktionen durch Spring 4. Die wichtigsten sind LambdaAusdruck, MethodeReferenz, JSR-310-Datum und -Uhrzeit sowie wiederholbare Anmerkungen. Werfen wir einen Blick mit dem Editor unten
Spring Framework 4 unterstützt die Sprache und API-Funktionen von Java 8. In diesem Artikel konzentrieren wir uns auf die Unterstützung der neuen Java 8-Funktionen durch Spring 4. Die wichtigsten sind Lambda-Ausdrücke, Methodenreferenzen, JSR-310-Datum und -Uhrzeit sowie wiederholbare Anmerkungen.
Lambda-Ausdrücke
Die Codebasis von Spring verwendet eine große Anzahl funktionaler Schnittstellen in Java 8, und Lambda-Ausdrücke können verwendet werden, um saubereren und kompakteren Code zu schreiben. Wir können einen Lambda-Ausdruck immer dann bereitstellen, wenn ein Objekt einer funktionalen Schnittstelle erwartet wird. Lassen Sie uns zunächst etwas über funktionale Schnittstellen lernen, bevor wir fortfahren.
Funktionale Schnittstelle
Eine Schnittstelle mit einer einzelnen abstrakten Methode wird als funktionale Schnittstelle bezeichnet. Hier sind einige Beispiele für funktionale Schnittstellen im JDK:
Komparator ist nur eine Abstraktion von Funktionen von Nicht-Objekt-Methoden. Obwohl zwei abstrakte Methoden deklariert sind, wird equal von der Zählung ausgeschlossen, da es sich um eine öffentliche Methode handelt, die dem Objekt entspricht. Eine Schnittstelle, die über eine Objektklassenmethode und keine Nichtobjektmethoden verfügt, ist keine funktionale Schnittstelle.
Eine Schnittstelle wird als funktionale Schnittstelle bezeichnet, wenn sie über eine abstrakte Nicht-Objekt-Klassenmethode verfügt und von einer nicht-funktionalen Schnittstelle mit einer eindeutigen Objekt-Klassenmethode erweitert wird.
Beispiel einer funktionalen Schnittstelle des Spring-Frameworks:
@FunctionalInterface Annotations kann in der Top-Deklaration der Schnittstellendeklaration verwendet werden, ist aber nicht erforderlich. Diese Annotation wird vom Compiler verwendet, um zu erkennen, ob die Schnittstelle eine gültige funktionale Schnittstelle ist. Wenn wir versuchen, mehrere einzelne abstrakte Methoden in einer Schnittstelle zu definieren, gibt der Compiler einen Fehler aus.
Funktionsdeskriptor
Der Funktionsdeskriptor einer Schnittstelle ist eine Abstraktion der Schnittstelle Der Typ der Methode. Der Methodentyp umfasst Parametertypen, Rückgabetyp und Throw-Klausel.
Beispiel:
So schreiben Sie einen Lambda-Ausdruck
Die Syntax des Lambda-Ausdrucks kann in drei Teile unterteilt werden Teil:
Ein Pfeil (–>)
Parameterliste: Ein Lambda-Ausdruck kann 0 oder mehr Parameter enthalten. Beispiel:
() → { System.out.println(“ No arguments”); } (String arg) → { System.out.println(“ One argument : ”+arg); } (String arg1, Integer arg2) → { System.out.println(“Two arguments : ”+arg1+” and ”+arg2); }
Nach dem Login kopierenAusdruckskörper: kann ein einzelner Ausdruck oder ein Codeblock sein. Ein einzelner Ausdruck wird einfach ausgewertet und zurückgegeben. Beispiel: (String arg) → { System.out.println(“ One argument : ”+arg); } Wenn im Ausdruckskörper (Body) ein Anweisungsblock vorhanden ist, wird dieser als Methodenkörper bestimmt und danach Der Block wird ausgeführt. Eine versteckte Return-Anweisung gibt dem Aufrufer die Kontrolle.
Jetzt werfen wir einen Blick auf die Verwendung von Lambda-Ausdrücken:
Beispiel 1:
// Verwenden des Lambda-Ausdrucks
Beispiel 2:
//Verwenden Sie den Lambda-Ausdruck
Sie können Lambda-Ausdrücke über die Rückruffunktionen von Spring verwenden. Beispielsweise kann die Verwendung eines ConnectionCallbacks zum Abrufen der Liste bestimmter JDBC-Verbindungen wie folgt geschrieben werden: jdbcTemplate.execute(connection -> Connection.getCatalog())
Methodenreferenz
Funktionale Schnittstellen können auch mithilfe von Methodenreferenzen implementiert werden, die auf Methoden oder Konstruktoren verweisen, diese aber nicht aufrufen. Methodenreferenzen ähneln Lambda-Ausdrücken, Methodenreferenzen verweisen jedoch auf Methoden einer vorhandenen Klasse, während Lambdas eine anonyme Methode als Instanz einer funktionalen Schnittstelle definieren.
In Java 8 enthält ein neues Paket eine funktionale Schnittstelle, die häufig für Lambda-Ausdrücke und Methodenreferenzen verwendet wird: java.util.function.
Date Time API
Es gibt mehrere Probleme mit den vorhandenen Date- und Time-Klassen in Java. Eines der größten Probleme mit den Klassen Date und Calendar besteht darin, dass sie nicht threadsicher sind. Entwickler müssen beim Schreiben von Code zur Datumsverarbeitung besonders auf Parallelitätsprobleme achten. Die Date-Klasse unterstützt auch keine Internationalisierung und daher keine Zeitzonen. Entwickler müssen viel Code schreiben, um verschiedene Zeitzonen zu unterstützen.
Datums- und Uhrzeitklassen weisen ebenfalls ein schlechtes API-Design auf. Der Monat in java.util.Date beginnt bei 0, der Tag beginnt bei 1 und das Jahr beginnt bei 1900. Es fehlt an Konsistenz. Diese und mehrere andere Probleme mit den Datums- und Uhrzeitklassen werden jetzt in den neuen Datums- und Uhrzeit-APIs in Java 8 behoben.
Die wichtigen Klassen der neuen Datums- und Uhrzeit-API im java.time-Paket sind LocalDate, LocalTime und ZonedDateTime.
LocalDate und LocalTime
Das Standardformat von LocalDate bei der Darstellung des Datums ist JJJJ-MM-TT, und es gibt keine Zeit. Dies ist eine unveränderliche Klasse. Wir können das aktuelle Datum mit der Methode now() ermitteln.
Beispiel für die Erstellung einer neuen LocalDate-Instanz:
//Erhalten Sie das aktuelle Datum
Wir können auch Jahr, Monat und eingeben day Parameter zum Erstellen einer neuen LocalDate-Instanz.
// 1. April 2016
LocalTime stellt eine datumslose Zeit dar und bleibt unverändert. Das Standardformat für die Zeit ist hh:mm:ss.zzz.
Beispiel für die Erstellung einer neuen LocalTime-Instanz:
//Erhalten Sie die aktuelle Zeit
// 18:30:30
Standardmäßig verwenden die Klassen LocalDate und LocalTime die Systemuhr in der Standardzeitzone. Diese Klassen bieten auch Unterstützung für das Ändern von Zeitzonen über die Methode overloaded new(). Sie können ein Datum in einer bestimmten Zeitzone erhalten, indem Sie Zoneid übergeben.
Beispiel:
// Aktuelles lokales Datum in Kalkutta (Indien)
Außerdem gibt es eine Klasse, LocalDateTime, die Datum kombiniert und Uhrzeit, das Standardformat ist jjjj-MM-ttTHH:MM:ss.zzz·.
//Aktuelles Datum und Uhrzeit
// 01.04.2016 13:30
ZonedDateTime
Dies ist eine unveränderliche Klasse, die zur Darstellung eines Datums und einer Uhrzeit einschließlich Zeitzoneninformationen verwendet wird. Wir können eine Instanz dieser Klasse verwenden, um ein bestimmtes Ereignis darzustellen, beispielsweise eine Konferenz in einem Teil der Welt.
// Die aktuelle Zeit verwendet die Systemzeit und die Standardzone
// Die aktuelle Zeit verwendet die Systemuhr in einer bestimmten Zeitzone
Spring 4 bietet ein Transformationsframework, das alle Klassen unterstützt, die Teil der Java 8-API für Datum und Uhrzeit sind. Spring 4 kann einen 2016-9-10 String nehmen und ihn in eine Instanz von Java 8 LocalDate konvertieren. Spring 4 unterstützt auch die Formatierung von Java 8-Datums-/Uhrzeitfeldern über die Annotation @DateTimeFormat. @DateTimeFormat deklariert, dass ein Feld als Datum und Uhrzeit formatiert werden soll.
Doppelte Annotationen
Vor Java 8 war das Hinzufügen mehrerer Annotationen desselben Typs zu einer Deklaration oder einem Typ (z. B. einer Klasse oder... Methode) ist nicht zulässig. Um dieses Problem zu umgehen, mussten Entwickler sie in einer einzigen Containeranmerkung zusammenfassen.
Beispiel:
Doppelte Annotationen ermöglichen es uns, denselben Code neu zu schreiben, ohne explizit Containerannotationen zu verwenden. Obwohl die Container-Annotation hier nicht verwendet wird, ist der Java-Compiler dafür verantwortlich, die beiden Annotationen in einen Container zu packen:
Beispiel:
Definieren Sie sich wiederholende Annotationen
Definieren Sie eine sich wiederholende Annotation, kommentieren Sie sie mit der wiederverwendbaren @Repeatable-Annotation oder erstellen Sie eine Annotation mit dem Attribut „Repeatable Annotation Type Series“ .
Schritt 1: Deklarieren Sie den wiederkehrenden Anmerkungstyp:
Schritt 2 Schritt: Deklarieren Sie den Containeranmerkungstyp.
Die gesamte Implementierung ist wie folgt:
Um Anmerkungen zur Laufzeit zu erhalten Zur Information versehen Sie es einfach mit @Retention(RetentionPolicy.RUNTIME).
Annotationen abrufen
getAnnotationsByType() oder getDeclaredAnnotationsByType() sind neue Methoden in der Reflection-API für den Zugriff auf Anmerkungen.
Annotationen können auch über ihre Containerannotationen mit getAnnotation() oder getDeclaredAnnotation() aufgerufen werden.
Fazit
Spring 4 läuft auch auf Java 6 und Java 7. Da Spring viele funktionale Schnittstellen verwendet, können Sie mit Java 8 und Spring 4 Lambda-Ausdrücke und funktionale Schnittstellen verwenden und saubereren, kompakteren Code schreiben.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die von Spring 4 unterstützten Java8-Funktionen (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Java8 berechnet das Datum vor einem Jahr oder ein Jahr später mithilfe der minus()-Methode, um das Datum vor einem Jahr zu berechnen packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[ ]args ){LocalDatetoday=LocalDate.now();LocalDate previousYear=today.minus(1,ChronoUni

So berechnen Sie das Datum eine Woche später in Java8. In diesem Beispiel wird das Datum eine Woche später berechnet. Das LocalDate-Datum enthält keine Zeitinformationen. Seine plus()-Methode wird zum Hinzufügen von Tagen, Wochen und Monaten verwendet. Die ChronoUnit-Klasse deklariert diese Zeiteinheiten. Da LocalDate ebenfalls ein unveränderlicher Typ ist, müssen Sie Variablen verwenden, um nach der Rückgabe Werte zuzuweisen. packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo08{publicstaticvoidmain(String[

Die Clock-Klasse von Java8 Java8 fügt eine Clock-Klasse zum Abrufen des aktuellen Zeitstempels oder von Datums- und Uhrzeitinformationen in der aktuellen Zeitzone hinzu. Wo zuvor System.currentTimeInMillis() und TimeZone.getDefault() verwendet wurden, können sie durch Clock ersetzt werden. packagecom.shxt.demo02;importjava.time.Clock;publicclassDemo10{publicstaticvoidmain(String[]args){//Gibt die aktuelle Zeitbasis zurück

Rufen Sie den aktuellen Zeitstempel in Java8 ab. Die Instant-Klasse verfügt über eine statische Factory-Methode now(), die den aktuellen Zeitstempel zurückgibt, wie unten gezeigt: packagecom.shxt.demo02;importjava.time.Instant;publicclassDemo16{publicstaticvoidmain(String[]args) {Instanttimestamp=Instant.now();System.out.println("Whatisvalueofthisinstant"+timestamp.t

Umgang mit Zeitzonen in Java 8 Java 8 trennt nicht nur Datum und Uhrzeit, sondern auch Zeitzonen. Es gibt jetzt eine Reihe separater Klassen wie ZoneId zur Verarbeitung bestimmter Zeitzonen und ZoneDateTime zur Darstellung der Zeit in einer bestimmten Zeitzone. Dies wurde von der GregorianCalendar-Klasse vor Java8 durchgeführt. Das folgende Beispiel zeigt, wie die Zeit in dieser Zeitzone in die Zeit in einer anderen Zeitzone konvertiert wird. packagecom.shxt.demo02;importjava.time.LocalDateTime;importjava.time.ZoneId;importjava.time.ZonedDateT

So verwenden Sie vordefinierte Formatierungstools in Java8, um Datumsangaben zu analysieren oder zu formatieren packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;publicclassDemo17{publicstaticvoidmain(String[]args){StringdayAfterTommorrow="20180205 ";LocalDateformatted =LocalDate.parse

Holen Sie sich das heutige Datum in Java8. LocalDate wird in Java8 verwendet, um das heutige Datum darzustellen. Im Gegensatz zu java.util.Date enthält es nur Datumsangaben und keine Uhrzeit. Verwenden Sie diese Klasse, wenn Sie nur Datumsangaben darstellen müssen. packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo01{publicstaticvoidmain(String[]args){LocalDatetoday=LocalDate.now();System.out.println("Heutiges Datum:&q

Bestimmen Sie, ob zwei Datumsangaben in Java8 gleich sind packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo04{publicstaticvoidmain(String[]args){LocalDatedate1=LocalDate.now();LocalDatedate2=LocalDate.of(2018,2,5) ;if(date1.equals(date2)){System.out.println("Times are equal");}e
