Notice
Recent Posts
Recent Comments
Link
과거의나야도와줘
Spring 08. AOP(Aspect Oriented Programming) 01 본문
728x90
주의!
공부하면서 제가 이해한 대로 쓰는거라 잘못된 부분이 있을 수 있습니다
만약 잘못된 부분이 있다면 댓글로 가르쳐주시면 감사합니다
이번 포스팅 부터는 AOP를 공부합니다
01. AOP란?
AOP(Aspect Oriented Programming)이란 뭘까요?
우리가 일반적으로 알고있는 OOP(객체지향 프로그래밍) 에서 모듈화의 핵심 단위는 클래스입니다.
반면 AOP에서 모듈화의 단위는 Aspect(관점)입니다
Aspect는 여러 타입과 객체에 거쳐서 사용되는 기능(Cross Cutting 공통관심사항)을 모듈화 하는 것 입니다.
공통관심사항이란 예를 들면 로그인 같은 기능입니다. 대부분의 서비스에서 로그인을 사용하는데
로그인이라는 기능은 서비스마다 다를 이유가 없죠 그런 공통적으로 사용하는 기능을 따로 모듈화 해서
개발자들은 핵심 사항(Core Concern)(주력 서비스)의 개발에만 집중할 수 있게 하는 것입니다.
포스팅 초반에 봤던 전략패턴 같은 느낌이라고 생각하면 됩니다
02. AOP 용어
지금은 무슨 말인지 모르시겠지만 일단 적어는 둘게요
- Aspect : 여러 클래스에 공통적으로 구현되는 관심사(Concern)의 모듈화
- Join Point : 메서드 실행이나 예외처리와 같은 프로그램 실행중의 특정 지점, Spring에서는 메서드 실행을 의미한다.
- Advide : 특정 조인포인트(Join Point)에서 Aspect에 의해서 취해진 행동, Around, Before, After 등의 Advide 타입이 존재
- Pointcut : Join Point에 Aspect를 적용하기 위한 조건 서술, Aspect는 지정한 pointcut에 일치하는 모든 join point에서 실행된다.
- Target 객체 : 하나이상의 advide가 적용될 객체, Spring AOP는 Runtime Proxy를 사용하여 구현되므로 객체는 항상 Proxy 객체가 된다.
- AOP Proxy : AOP를 구현하기 위해 AOP 프레인워크에 의해 생성된 객체, Spring Framework에서 AOP 프록시는 JDK dynamic proxy 또는 CGLIP proxy이다.
- Weaving : Aspect를 다른 객체와 연결하여 Advide 객체를 생성, 런타임 또는 로딩시 수행할 수 있지만 Spring AOP는 런타임에 위빙을 수행
cf) Spring AOP는 기본 값으로 표준 JDK dynamic proxy를 사용
인터페이스를 구현한 클래스가 아닌 경우 CGLIB 프록시를 사용
AOP의 이론적인 것을 간단히 짚어 봤는데요
다음 시간부터는 직접 코드를 치면서 알아봐요
728x90
'개발공부노트 > Spring' 카테고리의 다른 글
Spring 10. AOP 03 (0) | 2022.10.21 |
---|---|
Spring 09. AOP 02 (0) | 2022.10.21 |
Spring 07. Spring 환경 설정 3 (0) | 2022.10.20 |
Spring 06. Spring 환경 설정 2 (0) | 2022.10.18 |
Spring 05. Spring 환경 설정 1 (0) | 2022.10.13 |
Comments