티스토리 뷰
AOP란?
-객체 지향 프로그래밍에서 나타나는 문제점을 해결하기위한 프로그래밍 기법으로 관심사를 분리 시키는 기법입니다.
즉, 여러 함수나 객체에 반복적으로 나타나는 코드를 따로 모듈화를 하여 중복코드를 줄이고 가독성을 높이는 기법으로
주로 로깅, 트랜잭션 관리, 보안등의 코드를 모듈화 할 때 쓰입니다.
AOP 기본개념
- Aspect
-여러 객체나 함수에 걸쳐 나타나는 반복적인 코드를 모듈화 한 것입니다.
-'@Aspect' 애노테이션을 클래스에 설정하여 사용합니다
-여러 서비스나 컨트롤러에서 반복적인 동작을 해야할때 이를 Aspect로 정의하고 재사용합니다. - Advice(어드바이스)
- JoinPoint에서 실제로 실행되어야 할 코드 블록을 의미합니다.
- 다양한 종류의 Advice가 있으며, 코드가 실행되는 시점을 정합니다- Before
- 대상 메서드가 호출되기 전에 실행 - After
-대상 메서드의 실행이 끝난 후에 실행 - AfterReturning
-대상 메서드 실행 중 성공적으로 실행된 후에 실행 - AfterThrowing
-대상 메서드 실행 중 예외가 발생했을 때 실행 - Around
-대상 메서드의 호출 전후로 실행
- Before
- PointCut(포인트컷)
-Aspect를 적용시킬 범위를 정합니다.
-메서드, 클래스,디렉토리 등 다양한 대상을 범위로 지정할 수 있습니다.
-PointCut에 지정된 대상은 Advice의 영향을 받습니다.
-한 Aspect에 여러개의 PointCut이 있을 수 있습니다.
Advice 파라미터
- JoinPoint(조인 포인트)
-프로그램 에서 Aspect가 실행되어야 하는 특정 위치의 정보를 가리킵니다.
-Advice에서 JoinPoint 정보를 가지고 해당 위치에 Advice를 실행합니다.
-getSignature().getName(); 메서드를 주로 사용하여 메소드이름을 가져옵니다.
public void adviceMethod(JoinPoint joinpoint)
- ProceedingJoinPoint(조인 포인트 확장)
-JoinPoint를 확장하여 대상 메서드의 호출을 제어합니다.
public Object adviceMethod(ProceedingJoinPoint proceedingjoinpoint)
- Method Parameter(메소드 파라미터)
-Advice에서 대상 메서드의 파라미터 값을 직접 받아올 수 있습니다.
-파라미터 순서에 따라 순차적으로 가져옵니다.
public void adviceMethod(int arg1, String arg2)
- return value (리턴 값)
-Advice에서 대상 메서드의 반환 값을 가져올 수 있습니다
-애노테이션에 직접 returning 파라미터를 추가해야 합니다.
@AfterReturning(..., returning="result")
public void adviceMethod(Object result)
- Exception (예외)
-Advice에서 대상 메서드에서 발생한 예외를 가져올 수 있습니다.
-애노테이션에 직접 throwing 파라미터를 추가해야 합니다.
@AfterThrowing(..., throwing="ex")
public void adviceMethod(Exception ex)
'자바 > 스프링' 카테고리의 다른 글
스프링 WebSocket 및 Redis로 채팅 서버 구현기 (0) | 2024.04.22 |
---|---|
스프링 웹소켓 구현기 (feat. STOMP 먹통) (1) | 2024.02.25 |
스프링 웹소켓(Web Socket) (STOMP) (0) | 2023.08.05 |
스프링 데이터베이스 연결(JDBC,JPA) (0) | 2023.07.02 |
자바 스프링 테스트 (0) | 2023.07.02 |