Java + Spring Boot로 개발하다보면 DTO, VO등의 Getter, Setter 작업등을 애노테이션을 근간으로 설정해주는 라이브러리인 Lombok을 사용한다.
그치만 아직 Kotlin에선 Lombok 컴파일러 플러그인의 대해 정상 작동을 보증하지 않는다.
그렇다면 로그를 위한 애노테이션인 @Slf4j를 사용하지 못하는 아쉬움이 존재한다.
inline fun <reified T> logger() : Logger = LoggerFactory.getLogger(T::class.java)
@Component
class CustomFilter : AbstractGatewayFilterFactory<Any?>() {
val log = logger<CustomFilter>()
override fun apply(config : Any?) : GatewayFilter {
return GatewayFilter { exchange, filter ->
val request = exchange.request
val response = exchange.response
log.info("Custom PRE Filter : request id -> ${request.id}")
chain
.filter(exchange)
.then(Mono.fromRunnable {
log.info("Custom POST Filter : response code -> ${response.statusCode}")
})
}
}
}
reified가 무엇일까?
inline fun이 무엇일까?
이 문서 Kotlin : Inline functions 를 보고 공부합시다...
Kotlin : Lombok Compiler Plugin
Reddit : Slf4j loggers in 3 ways