11.3 环境准备

11.3.1 创建工程

首先,我们使用SPRING INITIALIZR来创建一个模板工程。

第一步:访问 <http://start.spring.io/,> 选择生成一个Gradle项目,使用Kotlin语言,使用的Spring Boot版本是2.0.0 M2。

第二步: 配置项目基本信息。 Group: com.easy.kotlin Artifact:chapter11_kotlin_springboot 以及项目名称、项目描述、包名称等其他的选项。选择jar包方式打包,使用JDK1.8 。

第三步:选择项目依赖。我们这里分别选择了:Web、DevTools、JPA、MySQL、Actuator、Freemarker。

以上三步如下图所示:

Kotlin极简教程

点击生成项目,下载zip包,解压后导入IDEA中,我们可以看到一个如下目录结构的工程:

1. .
2. ├── build
3. │   └── kotlin-build
4. │       └── caches
5. ├── build.gradle
6. ├── gradle
7. │   └── wrapper
8. │       ├── gradle-wrapper.jar
9. │       └── gradle-wrapper.properties
10. ├── gradlew
11. ├── gradlew.bat
12. └── src
13. ├── main
14. │   ├── kotlin
15. │   │   └── com
16. │   │       └── easy
17. │   │           └── kotlin
18. │   │               └── chapter11_kotlin_springboot
19. │   │                   └── Chapter11KotlinSpringbootApplication.kt
20. │   └── resources
21. │       ├── application.properties
22. │       ├── static
23. │       └── templates
24. └── test
25. └── kotlin
26. └── com
27. └── easy
28. └── kotlin
29. └── chapter11_kotlin_springboot
30. └── Chapter11KotlinSpringbootApplicationTests.kt

32. 21 directories, 8 files

其中,Chapter11KotlinSpringbootApplication.kt是SpringBoot应用的入口启动类。

11.3.2 Gradle配置文件说明

整个工程的Gradle构建配置文件build.gradle的内容如下:

1. buildscript {
2. ext {
3. kotlinVersion = '1.1.3-2'
4. springBootVersion = '2.0.0.M2'
5. }
6. repositories {
7. mavenCentral()
8. maven { url "https://repo.spring.io/snapshot" }
9. maven { url "https://repo.spring.io/milestone" }
10. }
11. dependencies {
12. classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
13. classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
14. classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
15. }
16. }

18. apply plugin: 'kotlin'
19. apply plugin: 'kotlin-spring'
20. apply plugin: 'eclipse'
21. apply plugin: 'org.springframework.boot'
22. apply plugin: 'io.spring.dependency-management'

24. version = '0.0.1-SNAPSHOT'
25. sourceCompatibility = 1.8
26. compileKotlin {
27. kotlinOptions.jvmTarget = "1.8"
28. }
29. compileTestKotlin {
30. kotlinOptions.jvmTarget = "1.8"
31. }

33. repositories {
34. mavenCentral()
35. maven { url "https://repo.spring.io/snapshot" }
36. maven { url "https://repo.spring.io/milestone" }
37. }

39. dependencies {
40. compile('org.springframework.boot:spring-boot-starter-actuator')
41. compile('org.springframework.boot:spring-boot-starter-data-jpa')
42. compile('org.springframework.boot:spring-boot-starter-freemarker')
43. compile('org.springframework.boot:spring-boot-starter-web')
44. compile("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}")
45. compile("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
46. runtime('org.springframework.boot:spring-boot-devtools')
47. runtime('mysql:mysql-connector-java')
48. testCompile('org.springframework.boot:spring-boot-starter-test')
49. }

其中主要的配置项如下表说明:

配置项 功能说明
spring-boot-gradle-plugin SpringBoot集成Gradle的插件
kotlin-gradle-plugin Kotlin集成Gradle的插件
kotlin-allopen Kotlin全开放插件。Kotlin 里类默认都是final的,如果声明的类需要被继承则需要使用open 关键字来描述类,这个插件就是把Kotlin中的所有类都open打开,可被继承
spring-boot-starter-actuator SpringBoot的健康检查监控组件启动器
spring-boot-starter-data-jpa JPA启动器
spring-boot-starter-freemarker 模板引擎freemarker启动器
kotlin-stdlib-jre8 Kotlin基于JRE8的标准库
kotlin-reflect Kotlin反射库
spring-boot-devtools SpringBoot开发者工具,例如:热部署等
mysql-connector-java Java的MySQL连接器库
spring-boot-starter-test 测试启动器