当前位置: 首页 > 知识库问答 >
问题:

使用kotlin x spring boot的Right Why数据库播种器

卢晟
2023-03-14

今天我学习使用kotlin和spring boot构建API。在rails和laravel中有一个用于数据库播种器的“工具”,我想知道在kotlin和spring boot中,我以前在google上搜索过并找到了这个答案https://stackoverflow.com/a/45324578/1297435,在spring boot中,我们可以像这样使用EventListerner

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

那是春靴,但在科特林有办法吗?

// 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中不起作用,还是正确?

错误:(15,6)静态编程语言:此类没有构造函数

共有1个答案

温峻熙
2023-03-14

您可能有问题,因为您将EventListener定义为接口,而不是从org.springframework.context.event导入它。(请参阅导入下方的接口EventListener

但你的实际问题是:我通常使用org。springframework。靴子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 {
            //
        }
    }

}

顺便说一句:我还使用了基于构造函数的注入。

 类似资料:
  • 问题内容: 我正在尝试分发在几个链接的容器中运行的一组连接的应用程序,这些容器包括一个mongo数据库,该数据库需要: 分发包含一些种子数据; 允许用户添加其他数据。 理想情况下,数据还将保存在链接的数据卷容器中。 我可以使用不装载任何卷的基本实例(dockerhub映像:-本质上是不带该语句的基本mongo Dockerfile )和配置的方式将数据放入容器中: 其中与Dockerfile 位于

  • 我们正在为我们的项目设置Flyway,我们正在重新考虑是否要使用Flyway迁移或手动使用sql控制台或某些引导脚本来播种数据。 我们担心的是,如果我们在Flyway中添加种子数据,这意味着还需要在Flyway中进一步修改这些数据。而且我们可能需要使用field=x或其他一些在某个时间点可能已经无效的条件,因为应用程序可以更改数据。这将是个问题。 在他们的文档中,我看不到任何建议不使用种子数据的内

  • 数据sql是在创建JPA实体之前执行的,它会导致找不到表的错误。有人能帮我吗?我在Spring Boot加载初始数据的链接中看到了相同的问题,但这个问题没有得到回答。

  • 本文向大家介绍Laravel 使用MySQL Dump播种,包括了Laravel 使用MySQL Dump播种的使用技巧和注意事项,需要的朋友参考一下 示例 遵循前面创建种子的示例。本示例使用MySQL Dump在项目数据库中播种表。必须在播种之前创建表。 $sql将成为users.sql转储的内容。转储应具有INSERT INTO语句。存储转储的位置将取决于您。在上面的示例中,它存储在项目目录中

  • 本章节将介绍如何创建一个从数据表 country 中读取国家数据并显示出来的页面。 为了实现这个目标,你将会配置一个数据库连接, 创建一个活动记录类, 并且创建一个操作及一个视图。 贯穿整个章节,你将会学到: 配置一个数据库连接 定义一个活动记录类 使用活动记录从数据库中查询数据 以分页方式在视图中显示数据 请注意,为了掌握本章你应该具备最基本的数据库知识和使用经验。 尤其是应该知道如何创建数据库

  • 使用 JDBC 连接数据库 JAVA应用要连接到数据库,首先需要加载数据库驱动,然后获得一个数据库连接,下面是一个简单的例子: import java.sql.*; public class Test { public static void main(String[] a) throws Exception { Class.forName("org