[JAVA] Printemps avec Kotorin ―― 1. INITIALISATION PRINTEMPS

Aperçu / Description

Java EE est diplômé et officiellement inscrit au printemps: en riant: C'est pourquoi je vais vivre une vie printanière à la fois en public et en privé: applaudissez:

Maintenant, pour revenir au sujet principal, je pense que beaucoup d'entre vous connaissent la relation entre Kotlin et Spring. À partir de Spring 5.0, le support Kotlin a été pris dans la partie principale du framework.

Introducing Kotlin support in Spring Framework 5.0

Kotlin En tant que sujet, je vais aborder le printemps à la manière de Kotlin.

Tout d'abord, utilisez SPRING INITIALIZR pour créer un modèle pour le projet Spring et comparer Java / Kotlin.

Au fait, ** Kotlin 1.3.0 ** vient de sortir l'autre jour (30/10/2018): clap :: clap: Il y a des mises à jour telles que ** Coroutines ** devenant officielles, mais c'est une autre histoire.

Hypothèse / environnement

Version d'exécution

À propos, la version par défaut de Kotlin était ** 1.2.70 ** (à partir du 2018/11/1) lorsqu'elle était générée par SPRING INITIALIZR.

Spring Dependencies

Environnement de développement

Procédure / Explication

Importez le modèle généré par SPRING INITIALIZR dans IntelliJ et utilisez-le. Comme mentionné précédemment, la version Kotlin est passée de ** 1.2.70 ** à ** 1.3.0 **.

SPRING INITIALIZR

SPRING INITIALIZR est un outil en ligne qui crée littéralement un modèle pour votre projet Spring et facilite la mise en route. L'opération est très simple, il suffit de sélectionner les éléments suivants sur l'écran.

--Type de projet: [Maven / Gradle]

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

Cliquez sur ** Générer un projet ** pour Java / Kotlin pour générer et télécharger un modèle de projet Spring. Importez le modèle dans l'EDI et utilisez-le.

Ce projet Java

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

Ce projet Kotlin

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

Comparaison de build.gradle

Comparons le build.gradle pour le projet Java décrit ci-dessous avec le build.gradle pour le projet Kotlin.

Bien sûr, vous pouvez voir que le contenu de la description et le format des deux sont fondamentalement les mêmes. Il y a deux différences.

Le projet Kotlin applique le plug-in Kotlin au lieu du plug-in Java.

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

De même, pour les bibliothèques dépendantes, la bibliothèque de Kotlin est ajoutée.

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

Le fait que la bibliothèque standard que j'ajoute soit * jdk * au lieu de * jre * est une autre histoire. Dans tous les cas, spécifiez ** jdk **.

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')
}

Comparaison de la classe principale

La comparaison de la classe Main est exactement la même en Java / Kotlin. La seule différence est de savoir si la méthode Main est formatée dans le style Java ou Kotlin Kotlin.

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

Tableau

Dans Kotlin, il n'y a pas de tableaux en Java. Par conséquent, une représentation de tableau est effectuée à l'aide d'un objet Array.

La différence entre un tableau Java et un tableau Kotlin n'est pas tant la façon dont ils sont définis, mais la nature.

--Java Array: Covariant

Par exemple, Kotlin ne peut pas affecter Array utilisé dans les paramètres de la méthode Main à Array . Vous pouvez garder le type en sécurité et éviter le risque d'erreurs d'exécution.

Extraction de tableau

Il existe une description des paramètres suivants qui ne sont pas visibles en Java.

*args

Il s'agit du format utilisé lors du développement et de l'utilisation des éléments d'un tableau.

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)
}

Résumé / Rétrospective

Cette fois, je viens de comparer les projets générés par SPRING INITIALIZR. Cependant, je pense qu'il semble que Kotlin puisse utiliser Spring aussi bien que Java. Je pense que vous pouvez comprendre que presque le même contenu a été écrit.

Il est compréhensible qu'il soit difficile de l'identifier par cela seul car il ne s'agit que de la source immédiatement après la génération automatique.

Donc, je voudrais approfondir ** Spring aime Kotlin ** à l'avenir.

Cette source

Recommended Posts

Printemps avec Kotorin ―― 1. INITIALISATION PRINTEMPS
Ressort avec actionneur Kotorin --5
Spring with Kotorin --- 8. Couche de référentiel
Ressort avec Kotorin ―― 7. Couche de service
Spring with Kotorin ―― 9. Migration de base de données ―― Flyway
Spring avec Kotorin --2 RestController et Data Class
Hello World à une vitesse explosive avec Spring Initializr! !! !!
Spring with Kotorin --8 Repository layer --Supplément: H2 Database
Validation personnalisée avec Spring
Avec Kotorin ―― 7. Fonction de cadrage
Télécharger avec Spring Boot
Ressort avec Kotorin ―― 3. Omettre les crochets d'onde de la fonction
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Configuration Java avec Spring MVC
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Fonction de connexion avec Spring Security
Utilisation de Mapper avec Java (Spring)
Hello World avec Spring Boot
Premiers pas avec Spring Boot
Lier l'API avec Spring + Vue.js
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Mise en œuvre de la fonction d'authentification avec Spring Security ②
Implémentez la fonction d'authentification avec Spring Security ③
Créez une application avec Spring Boot 2
Liaison de base de données avec doma2 (Spring boot)
Programmation Spring Boot avec VS Code
Jusqu'à "Hello World" avec Spring Boot
Mise en œuvre de la fonction d'authentification avec Spring Security ①
Obtenez des résultats de validation avec Spring Boot
Implémenter le téléchargement de fichiers avec Spring MVC
(Intellij) Hello World avec Spring Boot
Créez une application avec Spring Boot
Google Cloud Platform avec Spring Boot 2.0.0
J'ai essayé GraphQL avec Spring Boot
[Java] Intégration LINE avec Spring Boot
[Spring] Plusieurs beans auto-câblés. (Avec bonus)
À partir de Spring Boot 0. Utilisez Spring CLI
J'ai essayé Flyway avec Spring Boot
Certification / autorisation avec Spring Security & Thymeleaf
Contrôleur de cadre de test Spring avec Junit
La coopération des messages a commencé avec Spring Boot
Traitement lors du démarrage d'une application avec Spring Boot
OU rechercher avec la spécification Spring Data Jpa
Hello World avec Eclipse + Spring Boot + Maven
Créez un lot à la demande simple avec Spring Batch
Envoyez des notifications régulières avec LineNotify + Spring Boot
Effectuer un test de confirmation de transaction avec Spring Boot
Authentification DB avec Spring Security et hachage avec BCrypt
Créer un environnement de développement Spring Boot-gradle-mysql avec Docker
Essayez d'utiliser Spring Boot avec VS Code
Démarrez le développement d'applications Web avec Spring Boot
Lancez l'application Nginx + Spring Boot avec docker-compose