【发布时间】:2020-06-10 16:01:13
【问题描述】:
有没有办法在 Kotlin 中用注解类实现类似于 Lombok 的注解 @slf4j 的东西?
现在我有一个为我实例化 Logger Factory 的扩展函数,我必须在每个类中创建这些变量,就像下面的示例一样:
@RestController
@RequestMapping("/api/v1/sample")
class SampleController() {
private val log = logger()
@GetMapping
fun show(): String {
log.info("SOME LOGGING MESSAGE")
return "OK"
}
}
inline fun <reified T> T.logger(): Logger {
if (T::class.isCompanion) {
return LoggerFactory.getLogger(T::class.java.enclosingClass)
}
return LoggerFactory.getLogger(T::class.java)
}
我想要实现的是:
@Logger
@RestController
@RequestMapping("/api/v1/sample")
class SampleController() {
@GetMapping
fun show(): String {
log.info("SOME LOGGING MESSAGE")
return "OK"
}
}
【问题讨论】:
-
必须是注解吗?我们使用 Kotlin Logging (github.com/MicroUtils/kotlin-logging),它允许在类定义的正上方放置一个静态字段:
private val logger = KotlinLogging.logger {}然后您可以根据需要在您的类中使用此记录器。
标签: kotlin annotations