관리 메뉴

웹개발 블로그

[AOP] AOP의 개요와 용어 본문

◆ SPRING BOOT/AOP

[AOP] AOP의 개요와 용어

쿠키린 2024. 10. 31. 00:40

면접 질문으로  받았었던 AOP

오늘은 다시 정리해서 올리려고 합니다.

 

핵심기능? 부가기능?

  • 업무로직을 포함하는 기능을 핵심기능(Core Concerns)이라 함.
  • 비즈니스 로직을 구현한 부분 
    • ex) 책을 본다, 공부를 한다 
  • 핵심기능을 도와주는 부가적인 기능을 부가기능(Cross-cutting Concerns)이라 함. 
    • 로깅, 보안 등 시스템 전반에 산재되어 사용하는 기능
    • ex) 눈을 뜬다, 눈을 감는다
  • 핵심기능에서 부가기능을 분리해서 모듈화하는 프로그래밍 기법 = AOP

스프링 AOP

스프링을 통해서 AspectJ를 사용하는건 어렵지만

스프링 AOP를 사용하면 쉽게 사용 가능해진다.

 

AOP 흐름

Aspect(보안,인증, 로그 등 부가기능)

  • 부가기능(어드바이스)
  • 포인트컷(부가기능을 어디다 끼어놓을지, 위치정보) -- 특정 메소드를 지정(스프링 AOP는 메소드만 지정가능)

↕️

 

Weaving(위빙, 런타임 시 끼어들기)

 

↕️

 

핵심기능(비즈니스 로직을 구현한 부분)

 

AOP 설정

maven - 라이브러리 설정

<dependency>
 <groupId> org.springframework.boot </groupId>
 <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

 

aspect도 POJO로 만든다(일반 자바 클래스)

🔽상단에 어노테이션 기입

@Aspect
@Component
public class classAspect {
   ....부가기능.....
}

- 서버가 올라갈 때 같이 로딩됨.

 

 

 

더 자세한건 AOP 카테고리를 확인해주세요~!~