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 |