본문 바로가기

공부 기록/영상 후기

[10분 테코톡] 제이의 Spring AOP

https://youtu.be/Hm0w_9ngDpM

인프라 로직 => 부가 기능

- 애플리케이션의 전 영역에서 나타날 수 있음

- 중복 코드를 만들어낼 가능성이 있어 유지보수가 힘듦

- 비즈니스 로직과 함께 있으면 비즈니스 로직을 이해하기 어려워짐

  

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에 기능