본문 바로가기
Spring/AOP

Aspect

by 정재익 2026. 1. 23.

부가기능과 부가 기능을 어디에 적용할지 선택하는 기능을 합친 하나의 모듈이 에스펙트다
어드바이저도 어드바이스오 포인트컷을 가지고 있어 개념상 하나의 에스팩트
에스팩트는 관점이라는 뜻 횡단 관심사와 관련 애스팩트를 사용한 방식을 관점지향프로그래밍 AOP다
AOP는 OOP를 대체하는게 아니라 OOP의 부족한 부분을 보조함
 
에스팩트J는 AOP의 구현으로 스프링도 AOP를 지원하지만 결국 대부분 에스팩트J의 문법을 쓰고 에스펙트J의 일부기능만 지원
부가기능과 부가 기능을 어디에 적용할지 선택하는 기능을 합친 하나의 모듈이 에스펙트다
어드바이저도 어드바이스오 포인트컷을 가지고 있어 개념상 하나의 에스팩트
에스팩트는 관점이라는 뜻 횡단 관심사와 관련 애스팩트를 사용한 방식을 관점지향프로그래밍 AOP다
AOP는 OOP를 대체하는게 아니라 OOP의 부족한 부분을 보조함
 
에스팩트J는 AOP의 구현으로 스프링도 AOP를 지원하지만 결국 대부분 에스팩트J의 문법을 쓰고 에스펙트J의 일부기능만 지원
에스팩트는 애노테이션 기반 프록시 적용할 때 필요
어라운드의 값에 포인트컷 표현식 넣음 에스팩트j 표현식 사용
어라운드의 메서드는 어드바이스가된다
프로시딩조인포인트는 어드바이스의 메소드인보케이셔과 유사 내부에 호출 대상 전달 인자 등이 포함됨
조인포인트.proceed()로 실제 타겟을 호출
 
컨핑에서 에스팩트를 빈으로 등록
자동 프록시 생성기는 @Aspect를 찾아서 어드바이저로 변환하여 저장해
 
자동 프록시 생성기는 2가지 일함
에스팩트를 보고 어드보이저로 변환해서 저장
어드바이저를 기반으로 프록시 생성
 

자동 프록시 생성기가 에스팩트로 어드바이저 생성하는 과정
1. 실행 - 스프링 애플리케이션 로딩 시점에 자동 프록시 생성기 호출
2. 모든 에스팩트 조회 - 스프링 컨테이너에서 모든 에스팩트 어노테이션이 붙은 스프링 빈 조회
3. 어드바이저 생성 - 에스팩터 어드바이저 빌더를 통해 에스팩트 어노테이션 정보기반으로 어드바이저 생성
4. 에스팩트 기반 어드바이저 저장 - 생성한 어드바이저를 에스팩트 어드바이저 빌더 내부 저장 

포인트컷 - 필터링 
주로 클래스와 메서드 이름으로 필터링 어떤 포인트에 기능을 적용할지 잘라서 구분한
 
어드바이스 - 부가기능
 
어드바이저 - 포인트컷+어드바이스
 
포인트컷으로 어디에 적용할지 선택 어드바이스로 어떤 추가기능을 적용할지 선택 이 모든것을 알고있는게 어드바이저
 
조언(어드바이스)을 어디(포인트컷)을 할것인가
조언자(어드바이저는) 어디(포인트컷)에 조언(어드바이스)를 해야할지 알고있다
 
클라이언트가 프록시를 호출하면 프록시는 포인트컷으로 적용할지 말지정한다 그다음 어드바이스로 적용한다음 타겟 인스턴스의 로직을 호출한다
 
프록시팩토리는 어드바이저를 알고있고 어드바이저는 포인트컷과 어드바이스를 알고있다 
 
 
스프링이 제공하는 포인트컷
NameMatchMethodPointcut 메서드이름기반
JdkRegexpMethodPointcut JDK 정규 표현식 기반
TruePointcut 항상 참 반환
AnnotationMatchingPointcut 애노테이션 매칭
AspectJExpressionPointcut 에스팩트J표현식 매칭
 
에스팩트J가 젤 중요 거의 이것만 사용