小编BPS*_*BPS的帖子

使用 Kotlin BeanDefinitionDsl 时未调用 @PostConstruct

当使用 Kotlin BeanDefinitionDsl 将 bean 添加到上下文时,似乎不会调用 @PostConstruct 方法。

这在我自己的项目中发生在我身上,但为了创建一种简单的方法来重现它,这就是我所做的。

  1. 我分叉了使用 Kotlin DSL 的 Spring 示例https://github.com/sdeleuze/spring-kotlin-function
  2. 我向 UserHandler 类添加了 @PostConstruct。(更多详细信息如下。)
  3. 我将结果推送到这里:https ://github.com/benjishults/spring-kotlin-functions

因此,您所需要做的就是分叉我的存储库并执行 gradle 运行。

我的问题是:

  1. 既然我将类作为 bean 引入,难道我不应该期望 @PostConstruct 被调用吗?
  2. 我是不是少了一步?
  3. 这是 Spring 的 bug 吗?

如果您不想拉取我的存储库,请参阅以下有关我所做操作的更多详细信息。我将其添加到 UserHandler 类中:

@PostConstruct
fun afterPropertiesSet() {
    System.out.println("AFTER PROPERTIES SET CALLED")
}
Run Code Online (Sandbox Code Playgroud)

以及导入和 Gradle 依赖项。

通过调用 beans DSL 中的 bean 方法将 UserHandler bean 拉入上下文,如下所示:

fun beans() = beans {
    bean<UserHandler>()
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这被带入上下文:

beans().initialize(context)
Run Code Online (Sandbox Code Playgroud)

spring kotlin spring-bean

5
推荐指数
1
解决办法
5387
查看次数

如何在 Kotlin 中获取 Python 的切片运算符

Python 有一个切片运算符,我想在 Kotlin 中使用它。

我想要 Kotlin 中的以下代码

val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
println(
        list[5]
)
println(
        list[2, 5].joinToString()
)
println(
        list[2, 10, 2].joinToString()
)
val mutableList = mutableListOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
mutableList[2, 10, 2] = listOf(1, 2, 3, 4)
println(
        mutableList.joinToString()
)
Run Code Online (Sandbox Code Playgroud)

输出以下内容:

6
3, 4, 5
3, 5, 7, 9
1, 2, 1, 4, 2, 6, 3, 8, 4, 10
Run Code Online (Sandbox Code Playgroud)

但这不起作用!

python kotlin

4
推荐指数
1
解决办法
1452
查看次数

Kotlin 脚本找不到 Ktor CIO 类

我正在尝试将kotlin-main-kts与 Ktor 客户端一起使用。

这是我的简单 Kotlin 脚本,位于名为 的文件中ktor_tests.main.kts

@file:Repository("https://repo1.maven.org/maven2")
@file:DependsOn("io.ktor:ktor-client-core-jvm:1.5.3")
@file:DependsOn("io.ktor:ktor-client-cio:1.5.3")

import io.ktor.client.HttpClient
import io.ktor.client.engine.cio.CIO

println("Hello")

HttpClient(CIO).use {
    println("In client scope.")
}
Run Code Online (Sandbox Code Playgroud)

我运行它

kotlinc -cp ~/.m2/repository/org/jetbrains/kotlin/kotlin-main-kts/1.4.21/kotlin-main-kts-1.4.21.jar -script ktor_tests.main.kts
Run Code Online (Sandbox Code Playgroud)

输出是

OpenJDK 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.intellij.util.ReflectionUtil …
Run Code Online (Sandbox Code Playgroud)

kotlin ktor kotlin-script

2
推荐指数
1
解决办法
761
查看次数

标签 统计

kotlin ×3

kotlin-script ×1

ktor ×1

python ×1

spring ×1

spring-bean ×1