Реализовать аннотацию @ slf4j из Lombok в Kotlin - PullRequest
2 голосов
/ 26 февраля 2020

Есть ли способ реализовать что-то похожее на аннотацию Lombok @slf4j с классом аннотаций в Kotlin?

Сейчас у меня есть функция расширения, которая создает для меня фабрику логгеров, и я должен создать эти переменные в каждом из моих классов, как в примере ниже:

@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"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...