본문 바로가기

Spring/웹

AOP란? (Spring AOP)

AOP= 'Aspect Oriented Programming' (=관점 지향 프로그래밍) 

핵심 비지니스 로직과 공통 모듈을 분리하는 것

AOP는 OOP를 대신하는 새로운 개념이 아니라, OOP를 더욱 OOP답게 사용할 수 있도록 도와주는 보조자이다.

다음과 같이 로그나 권한체크, 보안, 트랜잭션 등 핵심 비지니스 로직은 아니지만 반드시 해야되는 작업은 반복되야 하는데,

이러한 문제를 해결해주는 것이 AOP 이다.


관련 용어

- Target

    : 부가기능을 부여할 대상, 핵심 기능을 담당하는 Service

 

- Aspect

    : 부가기능 모듈

    : Advice + PointCut가 포함

 

- Advice

    : 실질적으로 부가될 기능을 정의되어있는 구현체

     다시 말하면 Advice는 Aspect가 무엇을 언제할지를 정의함

 

- PointCut

    : Advice를 적용할 Joint Point를 선별하는 기능을 정의한 모듈

 

- JointPoint

    : Advice가 적용될 수 있는 위치 ( 메소드를 가르킨다고 생각하면 됨)

 

- Proxy

    : AOP의 구현방식은 '프록시(Proxy) 패턴' 이라는 방식을 통해서 구현한다

    :  Target을 감싸서 Target의 요청을 대신 받아주는 Wrapping 객체.

   : Proxy는 호출을 가로챔 -> Advice에 등록된 기능 수행 -> Target 메소드 호출

'Spring > ' 카테고리의 다른 글

Container란? (Servlet / Spring Container)  (0) 2021.04.03
Lombok의 좋은 사용법  (3) 2021.03.29
Spring Security  (1) 2021.02.06
Web Server vs Web Application Server  (0) 2021.01.24
Spring MVC 패턴을 이용한 Java 웹크롤러  (0) 2020.06.20