翻译自: https://spring.io/guides/tutorials/spring-boot-kotlin/
- 实体类的引入如下
- 值得注意的是,我们一般不在一个Kotlin File中定义多个类
- 我们没有使用data来定义数据类,是因为SpringData JPA还不支持这种定义方式
- 但是如MongoDB,JDBC等等,均支持相应的数据类定义方式
- 定义一个Repository的kotlin类
- CRUDRepository中有两个泛型需要制定
- 利用Junit进行测试
- 其中findByIdOrNull这个函数 默认由Spring Data的Kotlin插件提供
- 它和Java的Optional类是类似的
- 不过,Null是我们的朋友而不是错误,尤其是在数据库查询中
- 因为用户可能会经常干一些傻事,如果我们确实因为NULL而导致异常
- 那么服务器拓机,会给业务带来损失
- 我们Run一下整个测试类 Hibernate在底层辛勤的劳作着 下图显示成功
- 我们来更新一下模板引擎
- 我们来更新一下HtmlController
- HtmlController可以渲染Blog或者文章页,并用我们写好的日期
- ArticleRepository 和 MarkdownConverter构造参数会自动的被装配
- 因为我们有Controller注解,它偷偷的使用了@AutoWired注解
- 代码如下
- 接下来我们要对博客的内容去初始化 这里我们使用了title,headline,content,author等等,这些东西,它们会使得代码的可读性更高
- 当然,我们也要更新我们的测试代码,让测试驱动开发
- 接下来,我们就可以启动测试,观察一下
- 如果测试没有异常,我们就可以启动服务端,观察一下
- 点击一下超链接,再观察一下
- 以上证明我们的路由没有问题
- 下面我们要实现一些Web端相关的API
- 通过@RestController注解
- 该注解相当于@Controller和@ResponseBody
- 在src/Kotlin/下新建HttpController
- 对于测试来说,我们不使用集成测试,而使用@WebMVCTest注解和Mockk
- 下面的内容在本机上用Gradle第一次并没有成功,建议刷新IDEA重试,
- Mockk是一个对Kotlin友好的测试框架,和Mockito类似
- 在配置文件的dependenies中添加下列内容:
- 下面是Mockk(摩卡)的测试代码 唯一要注意的是$的转义
- 属性配置文件(这个内容在社区版中不支持,需要IDEA有Springboot插件,简单来说是原生支持)
- 在Kotlin中,建议使用 @ConfigurationProperties 和 @ConstructorBinding 来配置只读属性
- 代码如下
- 接着 我们让他在 BlogApplication(整个项目中) 作用范围内生效,在同样的文件中,添加下列代码