반응형
이 글은 인프런의 김영한 강사님의 스프링 입문- 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술의 강의 내용을 바탕으로 작성되었습니다.
AOP를 왜 쓰는가?
- 각 메서드마다 공통 관심사항(예를 들어 매소드 시간 측정) 구현하고 싶을 때
- 공통 관심 사항 vs 핵심 관심 사항
package hello.hellospring.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class TimeTraceAop {
@Around("execution(* hello.hellospring..*(..))")
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable{
long start = System.currentTimeMillis();
System.out.println("START: " + joinPoint.toString());
try{
return joinPoint.proceed();
}finally {
long finish = System.currentTimeMillis();
long timeMs = finish - start;
System.out.println("END: " + joinPoint.toString() + " " + timeMs + "ms");
}
}
}
스프링 aop를 생성하기 위해 class 파일을 하나를 생성했다. 일단 메서드가 호출될 때마다 시간을 호출하려고 준비를 했다.
- @Aspect -> 스프링 aop를 사용하겠다는 어노테이션
- @Around -> 어떤 패키지의 클래스 파일들에게 지정을 할 것인지 정하는 어노테이션
결과 메서드가 실행될 때마다 시간을 프린트한 것을 확인할 수 있다.
반응형
'spring > spring 기초' 카테고리의 다른 글
[spring] 스프링 입문 - > JPA (1) | 2023.10.31 |
---|---|
[spring] 스프링 입문 -> JDBC Template (1) | 2023.10.31 |
[spring] 스프링 입문 - >통합 테스트 (0) | 2023.10.26 |
[spring] 스프링 입문 - >순수 JDBC (0) | 2023.10.26 |
[spring] 스프링 입문 - >H2 데이터베이스 설치 (0) | 2023.10.24 |