본문 바로가기
Spring

스프링 AOP

by 밝지 2023. 3. 5.
728x90
반응형

AOP

Aspect Oriented Programing

 

 

핵심 기능들을 수행할 때 필요한 공통적인 부가 기능들(예: 로깅, 트랜잭션, 보안 등)과 같은 '횡단 관심(Crosscutting Concerns)'을 핵심 기능에서 분리하여 따로 모듈화하여 관리하는 것이다. 공통&부가기능을 따로 분리해서 관리하면 중복 코드를 작성하지 않아도 되고 유지보수도 용이하다. (따로 관리하지 않고 흩어져 있으면 변경이 필요할 때 일일이 수정해줘야 함)

 

 

 

AOP 관련 용어

  • Target - 부가 기능을 부여할 대상이 되는 (핵심 기능을 담은) 클래스
  • Aspect - AOP의 기본 모듈. 부가 기능을 정의한 Advice, 어디에 적용할지를 결정하는 PointCut으로 구성
  • Advice - 부가 기능을 정의한 구현체 
  • Joint Point - 어드바이스가 적용될 수 있는 위치. 스프링에서는 메소드만 가능
  • PointCut - 부가 기능을 적용할 대상이 되는 메소드를 선정하는 기능
  • Proxy - 부가 기능을 제공하는 오브젝트. DI를 통해 타겟 대신 클라이언트에 주입됨. 클라이언트의 메소드 호출을 대신 받아 타겟에 위임하여 부가 기능을 부여한다.
  • Introduction - 타겟 클래스에 추가적인 메소드나 필드를 추가하는 기능
  • weaving - 어드바이스(부가 기능 구현체)를 핵심 로직(타겟) 코드에 적용하는 것

 

 

 

Spring AOP 어노테이션

  • @Aspect - Aspect인 클래스에 명시
  • @Component - Aspect를 스프링 빈으로 등록
  • @PointCut - 부가 기능이 적용될 대상의 조건을 명시
@Aspect
@Component
public class TestAOP {

	@Pointcut("execution(* com.test.springAOP.aop.controller..*.*(..))")
    	private void cut() {
    
    	}

}

[Pointcut 문법]

  • 요약

 

728x90
반응형