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。
以上三步如下图所示:

点击生成项目,下载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 | 测试启动器 |
