10_Spring Framework chap09-aop

김지용·2023년 2월 25일
0
post-custom-banner

AOP

공통되는 부분을 따로 빼내어 작성하는 클래스를 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를 정의하는 태그

Advice를 정의하는 어노테이션

advice-annotation

javaconfig

Application

ContextConfiguration

이게 있어야지 Advice가 동작한다. weaver 라이브러리도 추가해야 한다.

AchievementResult(성취도) 이해도,만족도,취업률 관리

Passion(열정) 열정 점수 관리

Student(인터페이스) 열정 점수에 성취도가 달라짐

NormalStudent(평범한 학생) Student를 상속

빈으로 등록하고 AchievementResult를 오버라이딩함

GreedyStudent(열심히 하는 학생) Student를 상속

빈으로 등록하고 AchievementResult를 오버라이딩함

BeforeAttendingAdvice(Joinpoint(study) 앞에 출력)

AfterReturningAttendingAdvice(Joinpoint(study)메소드 종료후)

study 메소드 호출이 정상적으로 종료된후 실행

AfterAttendingAdvice(Joinpoint(study)메소드종료 후 리턴직전)

AchievementResult에 있는toString코드 오버라이딩한 클래스(노멀학생,그리디학생)가 리턴되기 직전에 실행함

AroundAttendingAdvice(Joinpoint(study)앞과 뒤에서 실행)

AfterThrowingAttendingAdvice(오류가 발생했을때 나오는 메세지)

그리디와 노멀 학생클래스에 열정이 조건보다 낮으면 쓰로우익셉션을 적용시켜 발생하는 코드를 작성하고 오류가 나면나옴 AfterAttendingAdvice은 오류가 나던 안나던 실행됨

결과


Normal Student

Greedy Student

xmlconfig

spring-context.xml

이걸 쓸때는 빈등록한 클래스에 있는어노테이션을 지우고 가능하다

post-custom-banner

0개의 댓글