Правильно почему Сеялка баз данных с kotlin x пружинной загрузкой - PullRequest
0 голосов
/ 14 октября 2018

сегодня я изучаю API сборки, используя kotlin и весеннюю загрузку.В rails и laravel есть «инструмент» для сеялки базы данных, я хочу знать, в kotlin и spring boot, я уже искал в google и нашел этот ответ https://stackoverflow.com/a/45324578/1297435, в весенней загрузке мы можем использовать @EventListerner как

@EventListener
    public void userSeeder(ContextRefreshedEvent event) {
        // my query
        // check query size and iteration
}

Это при весенней загрузке, но есть ли способ в 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

1 Ответ

0 голосов
/ 15 октября 2018

Возможно, у вас проблема, потому что вы определяете EventListener как интерфейс, а не импортируете его из org.springframework.context.event.(См. interface EventListener чуть ниже импорта.

Но у вас реальный вопрос: я обычно использую org.springframework.boot.ApplicationRunner для таких задач.

import org.springframework.boot.ApplicationArguments
import org.springframework.boot.ApplicationRunner

@Component
class UserSeeder(private val repository: UserRepository) : ApplicationRunner {

    override fun run(args: ApplicationArguments) {
        val users = repository.findByUsernameBlank()
        if (users == null || users!!.size <= 0) {
            //
        } else {
            //
        }
    }

}

Кстати: я также использовал инжекцию на основе конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...