본문 바로가기
Spring

[Spring] AOP

by 코딩로그 2022. 10. 27.
AOP(Aspect-Oriented Programming) : 전체 로직을 핵심 로직과 공통 로직의 관점으로 나누어 판단하고 관점 기준으로 분리하는 것

보통 관점 지향이라고 표현하는데, 관심사 기준으로 로직을 나눈다고 생각하자

 

 

 

Spring AOP 특징

1. spring bean에만 AOP 적용이 가능하다.

2. 프록시 패턴 기반이 AOP 구현체 사용한다.

 

 

 

Spring AOP 장점

1. 비즈니스 로직이 공통 로직과 독립적으로 존재한다.  따라서, 코드 관리에 용이하며, 가독성 용이하다.

 

 

 

AOP 용어

1. Advice : 적용할 공통 관심 사항의 기능을 의미하며 공통 로직에 해당한다.

2. Target : Advice가 적용될 특정 위치를 의미하며, 핵심 로직에 해당한다. Target은 순수한 비즈니스 로직을 의미하며, 어떠한 관심사들과도 관계를 맺지 않는다. 

3. Joinpoint : Target 객체가 가진 메서드

4. Pointcut : 어디에 공통 관심 기능을 삽입할 것인지를 정의합니다. Advice를 어떤 Joinpoint에 결합할 것인지를 결정합니다.

5. weaving

6. Aspect(Advice + Pointcut) : 관심사 그 자체

 

Target을 전체적으로 감싸고 있는 존재를 Proxy라고 합니다. Proxy는 내부적으로 Target을 호출하지만, 중간에 필요한 관심사들을 거쳐서 Target을 호출하도록 자동 혹은 수동으로 작성됩니다. => 스프링에서는 auto-proxy가 있어 자동으로 가능

 

 

 

Advice

1. before advice : target의 JoinPoint를 호출하기 전에 실행되는 코드, 코드의 실행 자체에는 관여할 수 없다.

2. After Returing Advice : 모든 실행이 정상적으로 이루어진 후에 동작하는 코드

3. After Throwing Advice : 예외가 발생한 뒤에 동작하는 코드

4. After Advice : 정상적으로 실행되거나 예외가 발생했을 때 구분 없이 실행되는 코드

5. Around Advice : 메서드의 실행 자체를 제어할 수 있는 가장 강력한 코드, 직접 대상 메서드를 호출하고 결과나 예외를 처리할 수 있습니다.

 

 

 

구현

1. <aop:aspectj-autoproxy /> 태그를 추가합니다.

2. @Aspect 어노테이션 사용한다.

 

 

 

 

참고 서적

코드로 배우는 스프링 웹 프로젝트

http://www.yes24.com/Product/Goods/64340061