首页 > 解决方案 > Micronaut:micronaut 启动后如何运行一个类的方法?

问题描述

假设我编写了一个简单的类(它在 Kotlin 中,但这个问题也扩展到 Java):

class Bot {
    fun initialize() {
        val client: GatewayDiscordClient =
            DiscordClientBuilder.create("MY-TOKEN")
                .build()
                .login()
                .block()!!

        MajorEvent.createEvents(client)

        client.onDisconnect().block()
    }
}

运行 Micronaut 应用程序的基本方式如下:

fun main(args: Array<String>) {
    build()
        .args(*args)
        .packages("com.codenamite")
        .start()
}

如何使Bot.initialize()在启动时运行?我已经@Singleton在类和方法上尝试了注释,@PostConstructinitialize()它似乎不起作用。

我试过了:

fun main(args: Array<String>) {
    build()
        .args(*args)
        .packages("com.codenamite")
        .start()
    val bot = Bot()
    bot.initialize()
}

它显然有效,但似乎Bot.initialize()超出了 Micronaut 的上下文。

有很多示例如何使用休息控制器或 croned 服务来做到这一点,但是有没有办法实现我想要的?

标签: javakotlinsingletonmicronaut

解决方案


推荐阅读