스프링/0. 입문, 전체방향

21강. AOP

sdafdq 2023. 7. 12. 07:58

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