Skip to content

Commit c0be30b

Browse files
committed
FEAT: Execution Time Aop
1 parent c2d88b8 commit c0be30b

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package jshop.common.aop;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.aspectj.lang.JoinPoint;
5+
import org.aspectj.lang.annotation.After;
6+
import org.aspectj.lang.annotation.Aspect;
7+
import org.aspectj.lang.annotation.Before;
8+
import org.aspectj.lang.annotation.Pointcut;
9+
import org.springframework.context.annotation.Profile;
10+
import org.springframework.stereotype.Component;
11+
12+
@Profile("execution_time")
13+
@Aspect
14+
@Slf4j
15+
@Component
16+
public class ExecutionTimeAspect {
17+
18+
private Long startTime;
19+
20+
@Pointcut("execution(* jshop..*(..))")
21+
public void allMethods() {
22+
}
23+
24+
@Before("allMethods()")
25+
public void start() {
26+
startTime = System.currentTimeMillis();
27+
}
28+
29+
@After("allMethods()")
30+
public void end(JoinPoint joinPoint) {
31+
String className = joinPoint.getSignature().getDeclaringType().getSimpleName();
32+
String methodName = joinPoint.getSignature().getName();
33+
StringBuilder sb = new StringBuilder();
34+
sb.append("[");
35+
sb.append(className);
36+
sb.append(".");
37+
sb.append(methodName);
38+
sb.append("] ");
39+
sb.append("time : ");
40+
sb.append(System.currentTimeMillis() - startTime);
41+
sb.append("ms");
42+
log.info(sb.toString());
43+
}
44+
}

web/src/test/java/jshop/web/security/LoginBaseTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
77

88
import com.fasterxml.jackson.databind.ObjectMapper;
9+
import jshop.common.aop.ExecutionTimeAspect;
910
import jshop.web.controller.AccountController;
1011
import jshop.core.domain.user.entity.User;
1112
import jshop.core.domain.user.service.UserService;
@@ -23,6 +24,7 @@
2324
import org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrint;
2425
import org.springframework.boot.test.context.SpringBootTest;
2526
import org.springframework.boot.test.mock.mockito.MockBean;
27+
import org.springframework.context.annotation.Import;
2628
import org.springframework.http.MediaType;
2729
import org.springframework.security.core.userdetails.UserDetails;
2830
import org.springframework.security.core.userdetails.UserDetailsService;
@@ -35,7 +37,7 @@
3537

3638
@EnableWebMvc
3739
@SpringBootTest(classes = {SecurityConfig.class, JwtUtil.class, ObjectMapper.class, AccountController.class,
38-
BCryptPasswordEncoder.class})
40+
BCryptPasswordEncoder.class, ExecutionTimeAspect.class})
3941
@AutoConfigureMockMvc(print = MockMvcPrint.NONE)
4042
@DisplayName("[통합 테스트] SpringSecurity")
4143
public class LoginBaseTest extends BaseTestContainers {

0 commit comments

Comments
 (0)