공통되는 부분을 따로 빼내어 작성하는 클래스를 Advice라고한다.
빼내는 시점을 Joinpoint라고 한다.
그 시점에 공통코드를 끼워 넣는 작업을 Weaving이라고 한다.
Joinpoint를 모아둔 것을 Pointcut이라고 한다.
아스펙트(Aspect)는 부가기능을 정의한 코드인 Advice와 Pointcut을 합친 개념이다.
Adive의 5가지 유형
Before advice : Joinpoint 앞에서 실행
Around advice : Joinpoint 앞과 뒤에서 실행
After advice : Joinpoint 호출이 리턴되기 직전에 실행
After Returning advice : Joinpoint 메소드 호출이 정상적으로 종료된후 실행
After Throwing advice : 예외(오류)가 발생했을때
이게 있어야지 Advice가 동작한다. weaver 라이브러리도 추가해야 한다.
빈으로 등록하고 AchievementResult를 오버라이딩함
빈으로 등록하고 AchievementResult를 오버라이딩함
study 메소드 호출이 정상적으로 종료된후 실행
AchievementResult에 있는toString코드 오버라이딩한 클래스(노멀학생,그리디학생)가 리턴되기 직전에 실행함
그리디와 노멀 학생클래스에 열정이 조건보다 낮으면 쓰로우익셉션을 적용시켜 발생하는 코드를 작성하고 오류가 나면나옴 AfterAttendingAdvice은 오류가 나던 안나던 실행됨
Normal Student
Greedy Student
이걸 쓸때는 빈등록한 클래스에 있는어노테이션을 지우고 가능하다