Intro::
코틀린으로 spring aop 단점을 보완하는 내용 정리본입니다.
Spring AOP 단점
- 구현의 번거로움
- 어노테이션과 명시된 곳에 삽입될 Advice를 정의한 클래스를 직접 구현해야 합니다.
- 내부함수 호출 적용 불가
- 내부 함수 호출이 this를 참조하고 있기 때문에 프록시를 거치지 않아 AOP 가 적용되지 않습니다. 이를 해결하기 위해서는 클래스를 분리하는 방법이 있습니다.
- 런타임 예외 발생 가능성
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와 동일한 동작을 합니다
Loading Comments...