코틀린 AOP
🙊

코틀린 AOP

Created
Aug 12, 2024 02:04 AM
Last edited time
Last updated August 12, 2024
Tags
Language
Language
kotlin
URL

Intro::

코틀린으로 spring aop 단점을 보완하는 내용 정리본입니다.
 

Spring AOP 단점

  1. 구현의 번거로움
    1. 어노테이션과 명시된 곳에 삽입될 Advice를 정의한 클래스를 직접 구현해야 합니다.
  1. 내부함수 호출 적용 불가
    1. 내부 함수 호출이 this를 참조하고 있기 때문에 프록시를 거치지 않아 AOP 가 적용되지 않습니다. 이를 해결하기 위해서는 클래스를 분리하는 방법이 있습니다.
  1. 런타임 예외 발생 가능성
 

Kotlin 에서 Spring AOP 단점 극복

Trailing Lambdas 문법을 사용하여 AOP 를 구현할 수 있습니다.
fun <T> loggingStopWatch(function: () -> T): T { val startAt = LocalDateTime.now() logger.info("Start At : $startAt") val result = function.invoke() val endAt = LocalDateTime.now() logger.info("End At : $endAt") logger.info("Logic Duration : ${Duration.between(startAt, endAt).toMillis()}ms") return result }
@Service class UserService{ fun signUp() = loggingStopWatch{ // .. Business Logic.. } }
Trailing Lambdas 문법을 통해 함수를 전달해서 적용
  • 함수 하나만 작성하면 AOP와 동일한 동작을 합니다
 
 

References::

 

Loading Comments...