본문 바로가기
Category/Spring

[Spring] Aspect-Oriented-Programming

by developer__Y 2023. 12. 22.
AOP란? 

 

AOP(Aspect-Oriented-Programming)란 관점 지향적 프로그래밍으로, 어떠한 일련의 행동들을

공통기능과 핵심기능이라는 관점으로 나누어 본다는 의미이다.

즉, 어떠한 기능에서 공통적으로 존재하는 기능을 뽑아내어 반복적으로 재사용할수 있도록 모듈화 할수있다.

 

AOP 주요 용어

 

- Aspect : 공통기능(Class)

- Advice : Aspect의 기능 자체 (method)

- Jointpoint : Advice가 적용되는 대상으로 핵심기능.

- PointCut : 핵심기능에 실제로 advice가 적용된 부분 

- weaving : advice를 핵심기능에 적용하는 행위

 

MainClass 에서 특정 기능을 호출하면, LogAop 라는 공통기능의 클래스(Aspect)가 핵심기능 Target에 Jointpoint(메소드)를 적용한다.

 

 XML 기반의 AOP 구현

 

1. pom.xml 디펜던시 추가(aop,cglib)

pom.xml

 

 

2. 핵심기능 Class 인 LogAop1

 

3. Application Context .xml 파일 설정

- LogAop1 공통기능(Aspect) 클래스 빈 등록

- <aop:config> 태그를 통해 aop 설정 

- <aop:aspect> : 공통 기능 정의

- <aop:pointcut> :expression: 핵심 기능 적용 범위

- <aop:around> : 메소드 실행 전/후 및 exception 발생시 advice(핵심기능) 실행 

 

4. MainClass 실행

 

 

 

어노테이션을 이용한 AOP 구현

 

<기존의 xml을 이용한 AOP 구현 파일과 동일>

 

1. Application Context xml 파일 설정

 

 

<aop:aspectj-autoproxy> 태그 추가

 

2. LogAop Class(Aspect) 클래스 파일에 해당 기능들에 어노테이션 설정