관점 지향 프로그래밍
ex) 모든 메서드에 걸리는 시간을 확인하고 싶을 때
공통 관심 사항과 핵심 관심 사항을 분리
원하는 곳에 공통 관심 사항을 적용
aop 적용 전
- 핵심 관심 사항과 공통 관심 사항의 구분이 모호함
- 공통 관심 사항의 로직을 적용하거나 수정하기 위해서는 모든 타겟을 수정해야함
aop 적용 후
- 타겟으로 설정한 메서드에만 공통 로직을 적용시킬 수 있음
- 핵심 로직을 수정할 필요 없이 공통 로직만 따로 수정이 가능함
타겟 메소드 aspect 실행 시점
- @Before (이전) : 어드바이스 타겟 메소드가 호출되기 전에 어드바이스 기능을 수행
- @After (이후) : 타겟 메소드의 결과에 관계없이(즉 성공, 예외 관계없이) 타겟 메소드가 완료 되면 어드바이스 기능을 수행
- @AfterReturning (정상적 반환 이후)타겟 메소드가 성공적으로 결과값을 반환 후에 어드바이스 기능을 수행
- @AfterThrowing (예외 발생 이후) : 타겟 메소드가 수행 중 예외를 던지게 되면 어드바이스 기능을 수행
- @Around (메소드 실행 전후) : 어드바이스가 타겟 메소드를 감싸서 타겟 메소드 호출전과 후에 어드바이스 기능을 수행