Springboot+Kotlin StartUp(上)
上部分 意译到Spring Data JPA之前
-
翻译自 https://spring.io/guides/tutorials/spring-boot-kotlin/(1)
- 截至2020年8月30日 作为一个初学者,我发现中文网上,竟然难以找到
- Springboot的官方入门指南的
- 中文版本
- 尽管文章的语法非常简单,很好懂,仍决定抽出一天来进行尝试和翻译其中的核心内容,也是为了提高自己的技术水平
- 创建一个Springboot项目
- Spring提供了https://start.spring.io 这个官方的initalizer
- 在其中勾选以下项目
- Kotlin
- Gradle Project
- 在右侧添加下列依赖
- Spring Web
- Mustache
- Spring Data JPA
- H2 Database
- Spring Boot DevTools
- 点击Generate Project 自动下载一个zip文件,该文件是Springboot项目的骨架
- Spring提供了https://start.spring.io 这个官方的initalizer
- 使用IDEA Community版本
- Open该项目,IDEA会自动下载相应的依赖文件,并配置好
- 由于中国网络的限制,该步骤比较慢,建议和家人,同事趁机聊聊天
- FQ也可
- 完成之后,右键Run一下,在8080端口,已经打开了Springboot项目,出现下图即代表成功
![]()
- 可以看到 入口函数,相当的简洁
![]()
- Open该项目,IDEA会自动下载相应的依赖文件,并配置好
- 写你的一个控制器
- 我们来写一个控制器去展示一个简单的网页
- 位于 该目录下 src/main/kotlin/com/example/blog/HtmlController.kt
- 复制以下代码,重新run一遍
![]()
- 代码的意思很简单,这个kotlin文件是一个控制器,注解本身是一个装饰器模式,在@GetMapping注解中,我们定义了一个路由
- 映射到了下面的处理函数
- 这里导入了一个ui.set的包,通过这个包,我们可以使用方括号语法,model["title"]="Blog"
- 无需使用冗长的setAttribute("title","Blog")
- https://docs.spring.io/spring-framework/docs/current/kdoc-api/spring-framework/
- 上面的网站,以目录的形式,列举了所有Spring为兼容Kotlin简单写法,而引入的额外包
- 尝试第三方mustache模板语法
- 以下文件,如果没有,需要自行添加
- Warning 在模板引擎中,请不要添加.html后缀
- 在src/main/resources/templates/header.mustache文件中,复制如下内容
- <html> <head> <title>{{title}}</title> </head> <body>
- 在src/main/resources/templates/footer.mustache文件中,复制如下内容
- </body> </html>
- 在src/main/resources/templates/blog.mustache中,复制如下内容
- {{> header}} <h1>{{title}}</h1> {{> footer}}
- 成功的标志
![]()
- 以下文件,如果没有,需要自行添加
- 使用Junit5 进行测试 (这一块我选择意译)
- Junit5是Springboot默认集成的测试框架,它和Kotlin非常相容
- 比如说@AutoWired注解自动注入方法中的参数
- 这使得非空的val属性和在普通的非静态方法中
- 使用@BeforeAll和@Afterall方法成为可能
- 在下面的案例中,我们会创造一个综合的测试去证明下述特性
- 小声:测试框架几乎都有下面的特性
- Junit5中更类似真实的句子,我们用顿号而不是驼峰,去创建了一个和自然语言很类似的测试函数
- Junit5中可以注入控制器或方法的参数,这很匹配 kotlin的val类型
- 下面的代码使用了getForObject 和 getForEntity 的Kotlin 扩展 (这意味着你要引入这些包)
- 文件:src/test/kotlin/com/example/blog/IntegrationTests.kt
- Warning : 该文件写于test目录,而非resource目录下
- 代码如下
![]()
- 执行测试,发现没有什么异常现象,说明没有问题
- 对类进行测试
- 有时候你可能需要在测试前后执行自己的方法,比如说日志
- 以前我们只能对每个方法进行测试,现在我们测试的时候,可以对一个类来测试
- 方法如下
- 创建一个Junit的配置文件:src/test/resources/junit-platform.properties
- 下面一句话,代表每次测试一个类
- junit.jupiter.testinstance.lifecycle.default = per_class
- 代码如下: 这里打印了SetUp和TearDown
![]()
- 结果如下图 打印出了SetUp,TODO,Tear down 证明测试成功
![]()
- 创建一个Junit的配置文件:src/test/resources/junit-platform.properties
- Junit5是Springboot默认集成的测试框架,它和Kotlin非常相容
- 自行编写插件,使用Kotlin的扩展函数语法
- 创造一个文件:src/main/kotlin/com/example/blog/Extensions.kt
- 在下面的图片中,LocalDateTime是一个类 后面跟着的.format()是我要扩展的函数名,下面就是我的函数,此后我就可以调用该函数了,好处是,不需要再导入Utils类了,原本在哪就在哪,只是换个地方定义插件
![]()
-
- 截至2020年8月30日 作为一个初学者,我发现中文网上,竟然难以找到









浙公网安备 33010602011771号