Spring Boot a Kotlin

1. Prehľad

V januári bolo urobené veľké oznámenie v jarnom ekosystéme: Podpora Kotlin prichádza na jarný rámec 5. To znamená, že Spring Boot 2.x bude mať prvotriednu podporu pre Kotlin.

To samozrejme nie je neočakávané, pretože tím spoločnosti Pivotal je známy akceptovaním jazykov JVM, ako sú Scala a Groovy.

Vytvorme si aplikáciu Kotlin pomocou aplikácie Spring Boot 2.x!

2. Inštalácia

2.1. Životné prostredie

Kotlin podporuje vývoj v IntelliJ, Eclipse a na príkazovom riadku. Podľa pokynov nastavte svoje prostredie na základe vašich preferencií.

2.2. Nastaviť

Najskôr vytvorme projekt Spring Boot 2 a upravme POM tak, aby obsahoval položky špecifikujúce verzie Java a Kotlin so závislosťami:

 org.jetbrains.kotlin kotlin-stdlib-jre8 1.2.71 org.jetbrains.kotlin kotlin-reflect 1.2.71 com.fasterxml.jackson.module jackson-module-kotlin 2.9.9 

Upozorňujeme, že určujeme umiestnenia súborov pre náš zdrojový a testovací súbor Kotlin:

$ {project.basedir} / src / main / kotlin $ {project.basedir} / src / test / kotlin

Ak sú naše súbory Kotlin na rôznych miestach, budete musieť tieto položky v POM upraviť.

Na zostavenie modulov a zdrojov Kotlin je potrebné použiť kotlin-maven-plugin:

 kotlin-maven-plugin org.jetbrains.kotlin 1.1.2 jar 1.8 kompilácia kompilácia kompilácia test-kompilácia test-kompilácia test-kompilácia org.jetbrains.kotlin kotlin-maven-allopen 1.1.2 

Dobre, teraz máme všetko, čo potrebujeme na vytvorenie našej aplikácie Kotlin. Pre referenciu: nájdete najnovšie verzie servera Maven Central (spring-boot-starter-web, kotlin-stdlib-jre8, kotlin-reflect, jackson-module-kotlin, test).

Ďalej nastavíme kontext našej aplikácie.

3. Kontext aplikácie

Poďme do nejakého kódu Kotlin a napíšme náš známy kontext aplikácie Spring Boot:

@SpringBootApplication trieda KotlinDemoApplication fun main (args: Array) {SpringApplication.run (KotlinDemoApplication :: class.java, * args)}

Vidíme svoje známe @SpringBootApplication anotácia. Toto je rovnaká anotácia, ktorú by sme použili v triede Java.

Ďalej máme definíciu triedy pre našu KotlinDemoApplication trieda. V Kotline je predvolený rozsah pre triedy verejný, aby sme to mohli vynechať. Ak navyše trieda nemá žiadne premenné a žiadne funkcie, môže byť deklarovaná bez zložených zátvoriek. Takže sme v podstate práve definovali triedu.

Prejdeme k metóde. Toto je štandardná metóda vstupu Java v Jave: public static void main (String [] args).

Metódy alebo funkcie sú opäť predvolene verejné, takže to tu nemusíme deklarovať. Navyše, funkcie, ktoré nič nevracajú, nemusia špecifikovať neplatný návratový typ.

A nakoniec, akákoľvek funkcia definovaná mimo tela triedy je automaticky statická. Vďaka tomu je táto funkcia vhodná na spustenie.

Teraz spustime našu aplikáciu z koreňového adresára pomocou mvn spring-boot: spustiť. Aplikácia by sa mala spustiť a mali by sme vidieť, ako je naša aplikácia spustená na porte 8080.

Ďalej si zostavme radič.

4. Kontrolór

Poďme sa pozrieť na pridanie ovládača do našej služby:

@RestController trieda HelloController {@GetMapping ("/ hello") zábava helloKotlin (): String {return "hello world"}}

Nie príliš sa líši od štandardného ovládača Spring, ale určite menej kódu. Poďme pridať testovaciu triedu a prípad pre tento radič na overenie našej práce:

@RunWith (SpringRunner :: class) @SpringBootTest (classes = arrayOf (KotlinDemoApplication :: class), webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) trieda KotlinDemoApplicationTests {@Autowired lateinit var testRestTemplate: Test_RestTemplate: TestRestTemplate: TestRestTplate_test // ... .getForEntity ("/ hello", String :: class.java) assertNotNull (result) assertEquals (result? .statusCode, HttpStatus.OK) assertEquals (result? .body, "hello world")}}

Tento test ukazuje jednu z veľmi výkonných funkcií Kotlina - nulovú bezpečnosť! Premenné Kotlin, ktoré môžu mať hodnotu null, je potrebné deklarovať pomocou znaku „?“. Kompilátor potom vie, že pred prístupom k tejto vlastnosti je potrebné obranné kódovanie.

V našom teste TestRestTemplate je definovaný ako typ s možnou hodnotou Null a zakaždým, keď k nemu vstúpime, urobíme to pomocou operátora spojenia null „?“. - ktorý vráti null, ak je volaný objekt null.

To objasňuje použitie nulových bodov v programe a núti vývojárov pri práci s nimi písať bezpečný kód.

Ďalej pridáme službu a integrujeme ju do nášho kontrolóra.

5. Služba

Ako už asi tušíte, pridanie našej služby do nášho projektu bude celkom jednoduché. Urobme to teraz:

@Service class HelloService {fun getHello (): String {return "hello service"}}

Celkom jednoduchá služba s jedinou funkciou vracajúcou reťazec. Ďalej poďme prepojiť našu službu s radičom a pomocou nej vrátiť hodnotu:

@RestController trieda HelloController (val helloService: HelloService) {// ... @GetMapping ("/ hello-service") zábava helloKotlinService (): String {return helloService.getHello ()}}

Aha, to vyzerá pekne! V Kotline možno hlavný konštruktor definovať inline s deklaráciou triedy. Vynechali sme @Autowired anotácia od nášho konštruktéra, pretože od určitého času nie je povinná.

Tieto parametre sa automaticky prevedú na polia v triede. Kotlin sa volajú vlastnosti. Nie sú definované žiadne getry ani settery; vytvárajú sa automaticky. Tieto predvolené hodnoty môžete samozrejme prepísať, ak chcete.

V Kotline je možné definovať vlastnosti v triedach a premenné vo funkciách pomocou var alebo val. Var označuje premenlivú vlastnosť a val označuje konečnú. Toto umožňuje kompilátoru skontrolovať nelegálny prístup. Od nášho HelloService je singleton, spájame ho ako val aby sa zabránilo mutácii.

Ďalej pridáme test pre túto metódu ovládača:

@Test zábava whenCalled_shouldReturnHelloService () {var result = testRestTemplate // ... .getForEntity ("/ hello-service", String :: class.java) assertNotNull (result) assertEquals (result? .StatusCode, HttpStatus.OK) assertEquals ( výsledok? .body, "ahoj služba")}

Na záver sa pozrime, ako vyzerá POJO v Kotline.

6. Kotlinská dátová trieda

V Jave reprezentujeme dátové objekty obyčajnými starými objektmi Java, POJO. V Kotline máme niečo, čo nám umožňuje výstižnejšie vyjadriť tento typ objektu - dátovú triedu.

Napíšme dátový objekt, ktorý sa má vrátiť v našom radiči:

dátová trieda HelloDto (pozdrav pozdravu: String)

To nebol žiadny trik. Z našej triedy nič nevynechávam. S modifikátorom údajov získame veľa výhod. Toto kľúčové slovo automaticky vytvára rovná sa / hashcode pár, a natiahnuť funkcie kopírovania. To všetko z 53-znakovej linky!

Teraz pridajme spôsob vrátenia našej novej dátovej triedy:

// ... @GetMapping ("/ hello-dto") fun helloDto (): HelloDto {return HelloDto ("Hello from the dto")}

Modifikátor údajov nepridáva predvolený konštruktor, čo je dôležité pre určité knižnice, napríklad Jackson. Na podporu tohto typu triedy sme pridali jackson-module-kotlin do nášho súboru POM na podporu zoradenia. Toto sa stalo počas sekcie 2 a tam môžete vidieť závislosť.

Na záver pridáme test pre túto funkciu radiča:

@Test zábava whenCalled_shoudlReturnJSON () {val result = testRestTemplate // ... .getForEntity ("/ hello-dto", HelloDto :: class.java) assertNotNull (result) assertEquals (result? .StatusCode, HttpStatus.OK) assertEquals ( výsledok? .body, HelloDto ("Ahoj z dto"))}

7. Záver

V tomto článku sme sa pozreli na podporu Kotlin vo Spring Boot 2.x. Z príkladov sme videli, že Kotlin môže zjednodušiť a vylepšiť naše aplikácie tým, že nás bude nútiť písať kratší a bezpečnejší kód.

Kotlin tiež podporuje niektoré úžasné funkcie, ako je dátová trieda, rozšírenia tried, a je plne kompatibilný s existujúcim kódom Java. To znamená, že môžete napísať Kotlinov kód a zavolať ho zo svojich tried Java a naopak. Okrem toho bol Kotlin od základov postavený tak, aby mal fantastickú podporu v IDE, a to sa deje.

Existuje veľa dôvodov, prečo vyskúšať Kotlin a keďže Google a Spring to podporujú, teraz je ten správny čas to vyskúšať. Dajte nám vedieť, čo ste sa rozhodli pomocou neho postaviť!

Zdrojový kód vždy nájdete na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found