[JAVA] Frühling mit Kotorin ―― 1. SPRING INITIALIZR

Übersicht / Beschreibung

Java EE hat im Frühjahr seinen Abschluss gemacht und sich offiziell eingeschrieben: lachend: Deshalb werde ich sowohl öffentlich als auch privat ein Frühlingsleben führen: klatschen:

Zurück zum Hauptthema: Ich denke, viele von Ihnen kennen die Beziehung zwischen Kotlin und Spring. Ab Spring 5.0 wurde die Kotlin-Unterstützung im Kern des Frameworks übernommen.

Introducing Kotlin support in Spring Framework 5.0

Kotlin Als Thema werde ich den Frühling in Kotlins Manieren ansprechen.

Verwenden Sie zunächst SPRING INITIALIZR, um eine Vorlage für das Spring-Projekt zu erstellen und Java / Kotlin zu vergleichen.

Übrigens, ** Kotlin 1.3.0 ** wurde neulich (30.10.2018) veröffentlicht: clap :: clap: Es gibt Updates wie ** Coroutines **, die offiziell werden, aber das ist eine andere Geschichte.

Annahme / Umwelt

Laufzeitversion

Übrigens war die Standard-Kotlin-Version ** 1.2.70 ** (Stand: 1.11.2018), als sie von SPRING INITIALIZR generiert wurde.

Spring Dependencies

Entwicklungsumgebung

Vorgehensweise / Erklärung

Importieren Sie die von SPRING INITIALIZR generierte Vorlage in IntelliJ und verwenden Sie sie. Wie bereits erwähnt, wurde die Kotlin-Version von ** 1.2.70 ** auf ** 1.3.0 ** geändert.

SPRING INITIALIZR

SPRING INITIALIZR ist ein Online-Tool, das buchstäblich eine Vorlage für Ihr Spring-Projekt erstellt und den Einstieg erleichtert. Die Bedienung ist sehr einfach. Wählen Sie einfach die folgenden Elemente auf dem Bildschirm aus.

Spring Initializr 2018-11-02 00-03-21.png

Klicken Sie für Java / Kotlin auf ** Projekt generieren **, um eine Spring-Projektvorlage zu generieren und herunterzuladen. Importieren Sie die Vorlage in die IDE und verwenden Sie sie.

Dieses Java-Projekt

Spring Initializr 2018-11-01 21-50-43.png

Dieses Kotlin-Projekt

Spring Initializr 2018-11-01 21-51-57.png

Vergleich von build.gradle

Vergleichen wir das build.gradle für das unten beschriebene Java-Projekt mit dem build.gradle für das Kotlin-Projekt.

Natürlich können Sie sehen, dass der Beschreibungsinhalt und das Format beider grundsätzlich gleich sind. Es gibt zwei Unterschiede.

Das Kotlin-Projekt wendet das Kotlin-Plug-In anstelle des Java-Plug-Ins an.

apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'

In ähnlicher Weise wird für abhängige Bibliotheken die Kotlin-Bibliothek hinzugefügt.

implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")

Die Tatsache, dass die Standardbibliothek, die ich hinzufüge, * jdk * anstelle von * jre * ist, ist eine andere Geschichte. Geben Sie in jedem Fall ** jdk ** an.

Java

buildscript {
	ext {
		springBootVersion = '2.1.0.RELEASE'
	}
	repositories {
		mavenCentral()
	}
	dependencies {
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'io.pivotal.syanagihara'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
	mavenCentral()
}


dependencies {
	implementation('org.springframework.boot:spring-boot-starter-web')
	testImplementation('org.springframework.boot:spring-boot-starter-test')
}

Kotlin

buildscript {
	ext {
		kotlinVersion = '1.3.0'
		springBootVersion = '2.1.0.RELEASE'
	}
	repositories {
		mavenCentral()
	}
	dependencies {
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
		classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
		classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
	}
}

apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'io.pivotal.syanagihara'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
compileKotlin {
	kotlinOptions {
		freeCompilerArgs = ["-Xjsr305=strict"]
		jvmTarget = "1.8"
	}
}
compileTestKotlin {
	kotlinOptions {
		freeCompilerArgs = ["-Xjsr305=strict"]
		jvmTarget = "1.8"
	}
}

repositories {
	mavenCentral()
}


dependencies {
	implementation('org.springframework.boot:spring-boot-starter-web')
	implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
	implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
	implementation("org.jetbrains.kotlin:kotlin-reflect")
	testImplementation('org.springframework.boot:spring-boot-starter-test')
}

Vergleich der Hauptklasse

Der Vergleich der Hauptklasse ist in Java / Kotlin genau der gleiche. Der einzige Unterschied besteht darin, ob die Main-Methode im Java-Stil oder im Kotlin-Kotlin-Stil formatiert ist.

public static void main(String[] args) {
	SpringApplication.run(SimpleApplication.class, args);
}
fun main(args: Array<String>) {
    runApplication<SimpleApplication>(*args)
}

Array

In Kotlin gibt es in Java keine Arrays. Daher wird eine Array-Darstellung unter Verwendung eines Array-Objekts durchgeführt.

Der Unterschied zwischen einem Java-Array und einem Kotlin-Array liegt nicht in der Art und Weise, wie sie definiert sind, sondern in der Art.

Beispielsweise kann Kotlin Array nicht das in den Parametern der Main-Methode verwendete Array zuweisen. Sie können den Typ sicher aufbewahren und das Risiko von Laufzeitfehlern vermeiden.

Extraktion des Arrays

Es gibt eine Beschreibung der folgenden Parameter, die in Java nicht angezeigt werden.

*args

Dies ist das Format, das beim Erweitern und Verwenden der Elemente eines Arrays verwendet wird.

Java

package io.pivotal.syanagihara.simple;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SimpleApplication {

	public static void main(String[] args) {
		SpringApplication.run(SimpleApplication.class, args);
	}
}

Kotlin

package io.pivotal.syanagihara.simple

import org.springframework.boot.runApplication
import org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootApplication
class SimpleApplication

fun main(args: Array<String>) {
    runApplication<SimpleApplication>(*args)
}

Zusammenfassung / Rückblick

Dieses Mal habe ich nur die von SPRING INITIALIZR generierten Projekte verglichen. Ich denke jedoch, dass Kotlin sowohl Spring als auch Java verwenden kann. Ich denke, Sie können verstehen, dass fast der gleiche Inhalt geschrieben wurde.

Es ist verständlich, dass es schwierig ist, dies allein zu identifizieren, da es nur die Quelle unmittelbar nach der automatischen Generierung ist.

Also würde ich gerne in Zukunft tiefer in ** Frühling liebt Kotlin ** eintauchen.

Diese Quelle

Recommended Posts

Frühling mit Kotorin ―― 1. SPRING INITIALIZR
Feder mit Kotorin --5 Aktuator
Frühling mit Kotorin --- 8. Aufbewahrungsschicht
Feder mit Kotorin ―― 7. Serviceschicht
Frühling mit Kotorin ―― 9. Datenbankmigration ―― Flyway
Feder mit Kotorin --2 RestController und Datenklasse
Hallo Welt mit explosiver Geschwindigkeit mit Spring Initializr! !! !!
Frühling mit Kotorin - 8 Repository-Schicht - Ergänzung: H2-Datenbank
Selbstgemachte Validierung mit Spring
Mit Kotorin ―― 7. Scoping-Funktion
Mit Spring Boot herunterladen
Feder mit Kotorin ―― 3. Auslassen von Wellenklammern aus der Funktion
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Java-Konfiguration mit Spring MVC
Implementieren Sie GraphQL mit Spring Boot
Beginnen Sie mit Spring Boot
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Anmeldefunktion mit Spring Security
Verwenden von Mapper mit Java (Spring)
Hallo Welt mit Spring Boot
Erste Schritte mit Spring Boot
API mit Spring + Vue.js verknüpfen
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Implementierte Authentifizierungsfunktion mit Spring Security ②
Implementierte Authentifizierungsfunktion mit Spring Security ③
Erstellen Sie eine App mit Spring Boot 2
Datenbankverknüpfung mit doma2 (Spring Boot)
Spring Boot Programmierung mit VS Code
Bis "Hallo Welt" mit Spring Boot
Implementierte Authentifizierungsfunktion mit Spring Security ①
Erhalten Sie Validierungsergebnisse mit Spring Boot
Implementieren Sie den Dateidownload mit Spring MVC
(Intellij) Hallo Welt mit Spring Boot
Erstellen Sie eine App mit Spring Boot
Google Cloud Platform mit Spring Boot 2.0.0
Ich habe GraphQL mit Spring Boot ausprobiert
[Java] LINE-Integration mit Spring Boot
[Frühling] Mehrere Bohnen automatisch verdrahtet. (Mit Bonus)
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Ich habe Flyway mit Spring Boot ausprobiert
Zertifizierung / Autorisierung mit Spring Security & Thymeleaf
Testen Sie den Spring Framework Controller mit Junit
Die Nachrichtenkooperation begann mit Spring Boot
Verarbeitung beim Starten einer Anwendung mit Spring Boot
ODER suchen Sie mit der Spring Data Jpa-Spezifikation
Hallo Welt mit Eclipse + Spring Boot + Maven
Erstellen Sie mit Spring Batch eine einfache On-Demand-Charge
Senden Sie regelmäßige Benachrichtigungen mit LineNotify + Spring Boot
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
DB-Authentifizierung mit Spring Security und Hashing mit BCrypt
Erstellen Sie mit Docker eine Spring Boot-gradle-mysql-Entwicklungsumgebung
Versuchen Sie es mit Spring Boot mit VS-Code
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Starten Sie die Nginx + Spring Boot-Anwendung mit Docker-Compose