SpringBoot 2.X Kotlin 系列之Hello World
从去年开始就开始学习kotlin了,但是一直没有时间总结自己学习的东西,现在终于有点时间了,所将整理一套SpringBoot kotlin 的开发教程,希望能够帮组更多想从Java转Kotlin的朋友。
一、Kotlin简介
Kotlin是一门静态语言,支持多种平台,包括移动端、服务端以及浏览器端,此外,Kotlin还是一门融合了面向对象与函数式编程的语言,支持泛型、安全的空判断,并且Kotlin与Java可以做到完全的交互。
二、教程环境
- JAVA "11.0.2"
- maven 3.5.3
- mongodb 4.0
- springBoot 2.1.3
- kotlin 1.3.21
三、创建项目
- 创建项目有两种方式:
- 一种是在Spring官网上创建https://start.spring.io/
- 二是在IDEA上创建如图所示
- 勾选Reactive Web 然后点NEXT,然后一直默认最后点击完成即可。
- 然后我们看到以下的项目结构
- POM文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>io.intodream</groupId> <artifactId>kotlin01</artifactId> <version>1.0.0</version> <name>kotlin01</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <kotlin.version>1.3.21</kotlin.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-kotlin</artifactId> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-reflect</artifactId> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib-jdk8</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory> <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <configuration> <args> <arg>-Xjsr305=strict</arg> </args> <compilerPlugins> <plugin>spring</plugin> </compilerPlugins> </configuration> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-allopen</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>
四、HelloWord
- 项目创建完后,我们看到了启动类和我和熟悉的Java SpringBoot几乎是一样的,正如官方所说的完全兼容Java,所以我们就不用担心了。
package io.intodream.kotlin01 import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication class Kotlin01Application fun main(args: Array<String>) { runApplication<Kotlin01Application>(*args) }
- 下面我们就来写一个Hello World
@RequestMapping("/rest") @RestController class HelloController { @GetMapping("/hello") fun hello (): String { return "Hello World" } }
- 写完后我们开始运行项目,看到控制台输入一下信息则说明运行完毕
2019-03-24 17:03:53.848 INFO 4342 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8080 2019-03-24 17:03:53.863 INFO 4342 --- [ main] i.i.kotlin01.Kotlin01ApplicationKt : Started Kotlin01ApplicationKt in 3.434 seconds (JVM running for 8.546)
- 打开浏览器输入http://localhost:8080/rest/hello,我们会看到下面的信息,第一个SpringBoot Kotlin项目我们就写好了。
- 我们在创建项目的时候选择的是Reactive Web,而不是传入Web,也就是说我们可以编写响应式的Web程序,下面就编写一个简单的响应式接口。
@GetMapping("/mono") fun helloMono(): Mono<String> { return Mono.just("Hello Mono") }
- 我们这里看到和普通的接口没有异同,除了返回类型是用Mono包装之外。与之对应的还有Flux,这个后面我们会讲到。
如果大家觉得文章有用麻烦点一下赞,有问题的地方欢迎大家指出来。
相关推荐
Nostalgiachild 2020-11-13
拓网科技 2020-11-13
susmote 2020-09-30
FrankAbagnale 2020-09-15
DanielMan 2020-09-02
hanqiusy 2020-08-26
Khellendros 2020-08-20
带你装逼带你飞 2020-07-20
星辰 2020-06-27
hohohogetitup 2020-06-19
NightWish 2020-06-11
Khellendros 2020-06-01
hohohogetitup 2020-05-31
Stranger 2020-05-30
ilovewqf 2020-05-30
ncuboy0wsq 2020-05-17
Stranger 2020-05-16
wuShiJingZuo 2020-04-26