du.study기록공간

Spring AOP - 관점 지향 프로그래밍 본문

스프링

Spring AOP - 관점 지향 프로그래밍

du.study 2019. 11. 30. 11:25
728x90

이번에는 Spring Aop에 대해서 기록해보려 합니다.

 

AOP(Aspect Oriented Programming)는 관점 지향 프로그래밍으로 불리며, 공통 기능, 그리고 메인 기능을 분리한 다음,  메인 기능 중에서, 필요한 부분에만 적용하여 사용하는 방법입니다.

 

실제로 저희가 코딩을 하다보면 로깅, 트렌젝션 등 공통적으로 적용해야 하는 부분이 있습니다. 이런부분을 AOP를 통해서, 각 클레스에서 별도의 선언을 하지않고 공통 코드를 통해서 관리가 가능합니다.

 

공통부분은 Aspect(공통기능)로 묶어서 기능을 구현하고, 메인 비지니스로직(실제 서비스 로직)과 분리하여 재사용성을 높힐 수 있습니다.

 

 

먼저 코드를 통해 살펴보기전에, AOP 용어에 대해서 정리하고 넘어가겠습니다.

 

Aspect : 공통기능이 구현되어있으며, 비지니스 로직에 적용되는 모듈 ( 간단하게 생각하면 하나의 Service 구현체적인 느낌 ) 

 

Advice : 실제 부가기능이 구현되어있는 부분을 말하여, 어떤순간에 공통모듈을 끼워넣을지에 대한 5가지의 경우를 가지고 있습니다. 

 - before : 타겟 메소드가 실행되기전 전에 어드바이스 기능 수행

 - after-returning : 타겟 메소드가 정상적인 리턴값을 반환한 후에 어드바이스 기능 수행

 - after-throwing : 타겟 메소드 진행중, 에러를 반환한 경우에, 어드바이스 기능 수행

 - after : 타겟 메소드가 완료(정상경우, 에러 포함) 되면 어드바이스 기능 수행

 - around : 타겟 메소드를 실행 전/후 및 에러발생 후 어드바이스 기능 수행

 

JoinPoint : Advice가 실제로 적용되는 위치, 스프링에서는 메서드만 적용이 가능합니다.

Pointcut : JointPoint 의 부분으로 Advice가 적용될 범위를 나타냅니다.

 

 

 

 

 

공부하면서 참고했던 페이지 : https://jojoldu.tistory.com/71

728x90
Comments