我已经尝试在Eclipse中与Spring Boot一起使用Kotlin了
引言
据说Spring 5中将包括对Kotlin的支持,但是我想先尝试将其与当前版本结合使用,以确认感觉。
任务对象 (zuò yè duì
-
- Java 8
-
- Kotlin 1.1.2-4
-
- eclipse Pleiades 4.6
-
- plugin
Spring Tool Suite(STS) for Eclipse 3.8.4
Kotlin Plugin for Eclipse 0.8.2
Spring boot 1.5.3
thymeleaf
安装Eclipse
-
- 将以下内容下载到本地。
-
- http://mergedoc.osdn.jp/
-
- 具体的位数根据操作系统相关,Java版本完整版。
将其解压到指定文件夹中。
安装插件
-
- 菜单栏 帮助(H)
-
- Eclipse市场(M)
-
- 在这里打开一个新的窗口
-
- 搜索选项卡 搜索(I)
-
- 输入”kotlin”
-
- 点击搜索(G)
-
- 找到 “Kotlin Plugin for Eclipse”
-
- 安装插件
-
- 屏幕将切换
-
- 同意使用条款(A)
-
- 完成(F)
-
- 出现安全警告,请点击确定
-
- 出现重新启动提示,请点击是(Y)
- 然后按照相同步骤搜索并安装”sts”插件。
创建项目
-
- 菜单栏 文件(F)
-
- 其他(O)Ctrl+N
-
- 在这里打开新窗口
-
- 选择“Spring Starter 项目”
-
- 下一步(N)
-
- ※类型应为Maven 语言应为Java
-
- ※名称和说明可随意
-
- 下一步(N)
选择Web和Thymeleaf
完成(F)
修改文件依赖(pom.xml)
向properties中添加以下元素。
1.1.2-4 可以被简化为:<kotlin版本>1.1.2-4</kotlin版本>。
在dependency中添加以下元素。
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
在build->plugins中添加以下元素。
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<goals> <goal>compile</goal> </goals>
</execution>
<execution>
<id>test-compile</id>
<goals> <goal>test-compile</goal> </goals>
</execution>
</executions>
</plugin>
※最终生成的pom.xml请参考文末
确认所创建的项目的运行状况
启动方式
-
- 在包装上右键点击
-
- 从上下文菜单中选择执行
-
- Spring Boot 应用程序
- ※按下Alt+Shift+x再按B即可启动。
春天
-
- 可以通过以下方式在包中添加以下类。
访问 http://localhost:8080/,如果显示“hello world”则表示OK。
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RootController {
@RequestMapping(path = "/")
public String root() {
return "hello world";
}
}
Kotlin 是一种原生的中文编程语言。
-
- 在包中添加以下类。
-
- 在RootController中添加以下方法。
如果访问 http://localhost:8080/kt?str=value ,并且输出为”{“str”:”value”}”,则表示一切正常。
package com.example.demo
data class Form (
var str:String = ""
)
@RequestMapping(path = "/kt")
public Object kt(Form form) {
return form;
}
thymeleaf (百世魔葉)
-
- 在包装中添加以下的类。
-
- 在/src/main/resources/templates中添加html文件。
在http://localhost:8080/tl上访问,如果能以字符串str和列表的形式依次显示3,2,1,则表示正常。
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TemplateController {
@RequestMapping(path = "tl")
public String tl(Model model) {
model.addAttribute("ktData", new Data());
return "tl";
}
}
<html>
<h1>Data values?</h1>
<div>
<span>str</span>
<span th:text="${ktData.str}"></span>
</div>
<div>
<span>numbers</span>
<ul th:each="value:${ktData.numbers}">
<li th:text="${value}"></li>
</ul>
</div>
</html>
印象
-
- data classはすぐにでも使うことは可能に思える。
thymeleafに食わせても素直に動いてくれるので特に問題は無さそう。
ビルド環境を整える上で、基本的にプラグイン1つとpomだけで対応できるのは大変よい。
Eclipseだとkotlinの補完が面倒(不慣れというのも関係あるかも)
書けるか、書けないかだとEclipseでもそれなりに書けると思う。
JavaDocに相当するKDoc?が現状のプラグインでは表示できないので、data class以外だと厳しいと思う。
Kotlinでコントローラー書こうとして@RequestMapping(path = “/”) endpoint(): Object{・・・}だとエラー出てたが何が悪かったんだろうか、、、
原文:ソース類
汉语:酱料类
<?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>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<encoding>UTF-8</encoding>
<project.build.sourceEncoding>${encoding}</project.build.sourceEncoding>
<project.reporting.outputEncoding>${encoding}</project.reporting.outputEncoding>
<kotlin.version>1.1.2-4</kotlin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
请参考以下内容。
- https://kotlinlang.org/docs/reference/using-maven.html