【发布时间】:2018-10-14 09:48:12
【问题描述】:
今天我正在学习使用 kotlin 和 Spring Boot 构建 API。在rails和laravel中有一个数据库播种器的“工具”,我想知道在kotlin和spring boot中,我之前在google上搜索过,找到了这个答案https://stackoverflow.com/a/45324578/1297435,在spring boot中我们可以使用@EventListernerlike
@EventListener
public void userSeeder(ContextRefreshedEvent event) {
// my query
// check query size and iteration
}
Spring Boot 中是这样,但在 kotlin 中有没有办法?
// main/kotlin/com.myapp.api/seeder/UserSeeder.kt
package com.myapp.api.seeder
import org.springframework.context.event.ContextRefreshedEvent
import com.myapp.api.repository.*
import com.myapp.api.model.*
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component
interface EventListener
@Component
class UserSeeder {
@Autowired
lateinit var repository: UserRepository
@EventListener
fun seedUsername(event: ContextRefreshedEvent) {
val users = repository.findByUsernameBlank()
if (users == null || users!!.size <= 0) {
//
} else {
//
}
}
}
@EventListener 类在 kotlin 中不起作用还是正确?
Error:(15, 6) Kotlin: This class does not have a constructor
【问题讨论】:
-
我不知道 spring-boot,但是你为什么不把那个 Java 代码翻译成 Kotlin 呢?喜欢
@EventListener fun userSeeder(event : ContextRefreshedEvent) { /* do sth */ }?这应该与上面的 Java 代码完全相同 -
@msrd0 我明白了,但是如何在 kotlin 中使用
@EventListerner? -
与Java中的方式相同(至少在方法上)?我认为唯一的区别是属性和文件注释
-
@msrd0 我尝试在 kotlin 中实现
@EventListerner,但出现错误,我已更新我的问题以放置我的 kotlin 播种器
标签: spring-boot kotlin