일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- HTTP3
- gitreset
- Git
- KAKAOLOGINAPI
- 매핑정보가없는필드
- 무상태프로토콜
- 데이터베이스 방언
- @Table
- anyMatch
- DB방언
- 캐쉬가능
- 멱등활용
- RFC723x
- 김영한JPA
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- 네이버 연결된 서비스
- gitrevert
- http
- fixedDelay
- @Entity
- org.apache.ibatis.binding.BindingException
- SpringBoot
- Invalid bound statement (not found)
- JPA
- initialDelay
- 자바ORM표준프로그래밍
- 네이버로그인API
- Transaction not successfully started
- HTTPMESSAGE
- hibernate.dialect
Archives
- Today
- Total
twocowsong
Spring Boot AOP 본문
프로그램 개발중 만약 각 메소드마다 시작 시간, 종료시간, 걸린시간을 출력하기위해서는 어떻게 해야할까요?
모든 메소드 호출마다 try문으로 감싸서 하는방법도있겠지만.. 시간과 고통이 엄청나겠죠.
이럴때 AOP를 이용하여 공통처리를하게된다면 빠른방법으로 처리할수있습니다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.3.16</version>
</dependency>
pom.xml에 dependency를 추가합니다.
/**
* AOP - 시작, 종료 공통 로직
*/
@Component
@Aspect
@Slf4j
public class TraceAop {
/**
* 모든 패키지에 적용되는 시작, 종료 공통 로직
* 시작시간 , 종료시간 출력
*/
@Around("execution(* com.twocow.song..*(..))")
public Object executeTimeTrace(ProceedingJoinPoint joinPoint) throws Throwable {
// 시작 전 사용될 내용
long start = System.currentTimeMillis();
log.info("START : " + joinPoint.toString());
try {
// 본문 내용 시작
Object result = joinPoint.proceed();
return result;
} finally {
// 종료 후 사용될 내용
long finish = System.currentTimeMillis();
long timeMs = finish - start;
log.info("END : " + joinPoint.toString() + " " + timeMs + "ms" );
}
}
}
TraceAop 클래스를 추가하였습니다.
@Around 어노테이션에는 패키지 범위를 지정할 수 있습니다.
패키지 범위를 적게 설정한다면 해당 패키지가 실행 될때만 수행됩니다.
join.proceed(); 에서 본문내용이 실행된 후 finally에서 완료 시간을 찍게됨으로 저희가 원하는 시간을 모든 메소드 실행마다 찍을수 있습니다.
원하는 패키지단위를 조절하거나 조금씩 입맛에 맞게 수정하여 사용하면 될것같습니다.
'IT > SpringBoot' 카테고리의 다른 글
Filter, interceptor, Aop (0) | 2022.05.24 |
---|---|
@Autowired , @RequiredArgsConstructor 차이 (0) | 2022.03.23 |
Environment (0) | 2022.02.02 |
@RestController @Controller (0) | 2022.01.24 |
@Scheduled (0) | 2022.01.23 |