인프라 로직 => 부가 기능
- 애플리케이션의 전 영역에서 나타날 수 있음
- 중복 코드를 만들어낼 가능성이 있어 유지보수가 힘듦
- 비즈니스 로직과 함께 있으면 비즈니스 로직을 이해하기 어려워짐
AOP(Aspect-Oriented Programming)
- OOP와 대비되는 개념이 아닌 보완하는 개념
- AOP 구현체
- Transactional, Interceptor, Filter ...
AOP 용어
- Target : 어떤 대상에 부가 기능을 부여할 것인가
- Advice : 어떤 부가 기능을 부여할 것인가 - Before, AfterReturning, AfterThrowing, After, Around
- Join point : 어디에 적용할 것인가 - 메서드, 필드, 객체, 생성자 등. Spring AOP에서는 메서드가 실행될 때
- Point cut : 실제 advice가 적용될 지점. Spring AOP에서는 advice가 적용될 메서드를 선정
AOP의 구현 방법
- 컴파일 : J.java->J.class로 컴파일하는 시점에 해당하는 aspect를 끼워넣어준다.
- 클래스 로드 시 : 클래스 로더가 메모리 상에 올릴 때
- 프록시 패턴 : 부가 기능을 제공하는 프록시로 감싸서 실행
Spring AOP vs AspectJ
Spring AOP | AspectJ | |
목표 join point weaving 대상 |
간단한 AOP 기능 제공 메서드 레벨만 지원 런타임 시에만 가능 Spring Container가 관리하는 Bean에만 기능 |
완벽한 AOP 기능 제공 생성자, 필드, 메서드 등 다양하게 지원 런타임은 제공하지 않음. compile-time, post-compile, load-time 제공 모든 Java Object에 기능 |
'공부 기록 > 영상 후기' 카테고리의 다른 글
[10분 테코톡] 나봄의 CORS (0) | 2023.04.10 |
---|---|
[10분 테코톡] 멍토의 Blocking vs Non-Blocking, Sync vs Async (0) | 2023.04.10 |
[10분 테코톡] 하루의 실행 컨텍스트 (0) | 2023.04.09 |
[10분 테코톡] 쿨라임의 HTTP/1.1, HTTP/2, 그리고 QUIC (1) | 2023.04.09 |
[10분 테코톡] 코일의 Web Socket (0) | 2023.04.09 |