diff --git a/src/main/java/com/woozuda/backend/account/controller/AdminController.java b/src/main/java/com/woozuda/backend/account/controller/AdminController.java index dd9ced10..94d78b5b 100644 --- a/src/main/java/com/woozuda/backend/account/controller/AdminController.java +++ b/src/main/java/com/woozuda/backend/account/controller/AdminController.java @@ -1,6 +1,7 @@ package com.woozuda.backend.account.controller; +import com.woozuda.backend.aop.LogExecutionTime; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -12,6 +13,7 @@ public String adminP(){ return "admin controller"; } + @LogExecutionTime @GetMapping("/account/sample/alluser") public String allP(){ return "all user can access this page!"; @@ -19,5 +21,4 @@ public String allP(){ @GetMapping("/account/sample/user") public String userP(){ return "user can access this page! ";} - } diff --git a/src/main/java/com/woozuda/backend/aop/LogExecutionTime.java b/src/main/java/com/woozuda/backend/aop/LogExecutionTime.java new file mode 100644 index 00000000..6f7e50ec --- /dev/null +++ b/src/main/java/com/woozuda/backend/aop/LogExecutionTime.java @@ -0,0 +1,11 @@ +package com.woozuda.backend.aop; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface LogExecutionTime { +} diff --git a/src/main/java/com/woozuda/backend/aop/LogExecutionTimeAspect.java b/src/main/java/com/woozuda/backend/aop/LogExecutionTimeAspect.java new file mode 100644 index 00000000..ae8ed877 --- /dev/null +++ b/src/main/java/com/woozuda/backend/aop/LogExecutionTimeAspect.java @@ -0,0 +1,25 @@ +package com.woozuda.backend.aop; + +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.stereotype.Component; + +@Aspect +@Component +@Slf4j +public class LogExecutionTimeAspect { + + @Around("@annotation(com.woozuda.backend.aop.LogExecutionTime)") + public void logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { + long start = System.currentTimeMillis(); + + // 실제 메서드 실행 + joinPoint.proceed(); + + long executionTime = System.currentTimeMillis() - start; + log.info("[LogExecutionTime] {} executed in {} ms", + joinPoint.getSignature(), executionTime); + } +}