Aspect Oriented Programming
측면 지향 프로그래밍
공통관심사항과 핵심관심사항 분리
뭔가 좀 함수마다 공통사항? 예를들어 모든 함수의 실행시간을 측정하고 싶다거나 그런거에 쓰는 듯.
어디까지나 보조역할
@Aspect //AOP 한다는 뜻.
@Component //이거 해두면 @Bean으로 따로 등록 안해도 됨.
public class TimeTraceAop {
@Around("execution(* hello.hellospring..*(..))") //여기서 특정함수나 클래스 지정 가능. 이거는 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");
}
}
}
대충 이렇다 함. 가짜 memberService 만들고 JoinPoint.proceed() 지나면 실제 memberService 실행한다고 함.
'스프링 > 0. 입문, 전체방향' 카테고리의 다른 글
20강. 스프링 JPA (0) | 2023.07.12 |
---|---|
19강. JPA (0) | 2023.07.10 |
18강. Jdbc 템플릿 (0) | 2023.07.09 |
17강. spring 종합 테스트 (0) | 2023.07.09 |
16강. 순수 JDBC (0) | 2023.07.09 |