1. 컨트롤러에 있는 함수들에 @LogExecutionTime 어노테이션을 붙여준다. (핵심비지니스로직)
2. create annotation 해준다.
3.@LogExecutionTime 을 만들것이다.
4. 어노테이션 만들때 @Target 지정 , @Retention 붙이기 //어노테이션 정보 언제까지유지할것인가
5-1. 이제되는가?
아니다.
어노테이션은 주석이랑 같다 그냥 주석이다.
이제 이거를 읽어서 처리해줄 로직코드가 필요하다.
5-2 그것이 Aspect 이다. (porxy패턴기반으로 실행된다.)
@Component //Bean으로 등록되어야 하기 떄문에.
@Aspect //advice + pointcut이 있다.
public class LogAspect{
/**Advice등록**/
Logger logger= LoggerFactory.getLogger(LogAspect.class);
@Around("@annotation(LogExecutionTime)") //이걸 붙인 메소드는joinpoint라는 파라미터를 받을수 있음
public Object logExecutionTime(ProceedingJoinPoint joinPoint)thorws Thorwable{ //joinPoint는 @LogExecutionTime이라는 어노테이션이다.
Object proceed=joinPoint.proceed(); //종단관심 실행
stopWatch .stop();
return proceed;
}
}
tip_
` pointcut : joinpoint를 설정하여 Advice가 언제 실행될지 설정하는것
` aspect : pointcut + advice
'Spring' 카테고리의 다른 글
MVC 초간단 정리 (0) | 2020.01.18 |
---|---|
AOP 정리3 (0) | 2020.01.16 |
AOP란? (개념 + ProxyFactory 사용하여 설정) (0) | 2020.01.15 |
httpclient cannot be resolved to a type _ httpclientbuilder cannot be.... 에러 sts에서 자동 import안될때 (0) | 2020.01.14 |
No converter for [class com.example.Model.ResponseNaverMovie] with preset Content-Type 'application/json;charset=UTF-8' 에러 (0) | 2020.01.14 |