티스토리 뷰

진행 중인 프로젝트 메서드에 slow query 분석 또는 잘못된 비즈니스 로직을 해결하기 위해 시간 측정 AOP를 활용해봤다

우선 aop 관련 package를 따로 만들어주고 시간 측정할 메서드에 적용시킬 custom annotation을 만들어 준다

 

 

 

AOP 활용을 위해 구글링 하면 보통의 블로그에서는 method level에 적용시키는 방법만 알려주고 있다

나는 단순히 몇 개의 메서드에만 적용시킬 게 아니라 코드 프리징과 배포를 하기 바로 직전까지

문제 해결을 위해 시간 측정을 계속할 계획을 가지고 있다

따라서 나와 같은 상황에서 시간 측정을 위해서라면 @LogExecutionTime 애너테이션을 모든 메서드에 달아줘야 한다

사실 애너테이션만 달아주면 해결되는 문제니 별 신경을 쓰지 않을 수도 있겠지만 

생활코딩 영상에서 자주 등장하는 '상상력을 발휘해보면'

우리 프로젝트의 메서드가 500개가 된다면? 1000개가 된다면? 일일이 달아줄 수는 없는 노릇이다

그렇기에 해결할 방법을 찾아보았고 메서드 레벨이 아닌 클래스 레벨에 애너테이션을 달아주는 방법으로 결정했다

클래스 레벨 애너테이션에 적용하는 것을 내가 못 찾은 것인지, 결과가 없는 것인지 어찌 됐든 못 찾았다

 

 

시간 측정 AOP에 관해 퀄리티 높은 블로그 글을 찾았고, 혹시 아시려나 하고 조심스레 질문글을 남겼다

그 후 영어로 검색해서 스택 오버 플로우에서 관련된 키워드를 찾았고

@Around("@within(~~)") 방식으로 해결할 수 있다는 것을 봤다

다른 일을 하다가 다시 문제 해결을 위해 자리에 앉았는데

전에 질문글을 남겼던 블로그 주인 분이 예제와 함께 친절히 답글을 달아주셨다

 

마지막 부분 쯤에 class level에 적용하는 예제가 나와있다

class level 적용 방법 외에도 나도 아직 다는 안 봤지만 이 블로그에 좋은 자료들이 많으니 첨부터 정독하시길..

이 분의 글을 보고 있자면 내공이 느껴진다 나도 열공해서 이런 똘똘이가 되야겠다

 

 

[SpringBoot] AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)의 개념 및 사용 방법 예제 코드 - (2/3)

1. AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)이란? [ AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)이란? ] 프로그래밍을 하다보면 공통적인 기능이 많이 발생한다. 이러한 공통..

mangkyu.tistory.com

 

 

 

 

 

보통의 예제에서는 custom annotation에서 @Target(ElementType.METHOD)로 되어있을 텐데

TYPE까지 지정해주어야 클래스 레벨에 적용시킬 수 있다

이후 실행을 담당할 Aspect에서 within 방식으로 @Around를 작성해준다

 

 

Controller에 애너테이션을 달아주었다

 


2022. 03. 12

 

Pointcut expression을 썼다면 더 간단 했을 것을..

애노테이션을 직접 만드는 방식은 메서드 선별적으로 붙여야 할 필요가 있을 때 사용하도록 하고

모든 Controller, 모든 Method에 붙여야 한다면 단순하게 Pointcut expression 사용하도록 하자

아래와 같이 해둔다면 Controller로 이름이 끝나는 모든 빈에 적용시킨다

 

댓글
링크
글 보관함
«   2024/12   »
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
Total
Today
Yesterday