관점 지향 프로그래밍 AOP (Aspect Oriented Programming)
-> 애플리케이션을 바라보는 관점을 횡단 관심사 관점으로 보는 것
-> OOP 대체 X
-> 횡단 관심사를 깔끔하게 처리하기 어려운 OOP 를 보조하는 목적
OOP 가 가진 부가 기능 적용 문제
-> 수많은 중복, 그로 인한 수많은 수정
AspectJ : AOP 의 대표적인 구현
-> 자바 프로그래밍 언어에 대한 완벽한 관점 지향 확장
-> 횡단 관심사의 깔끔한 모듈화 (캐싱, 로깅, 오류 검사 등)
스프링이 사용하는 AOP 적용 : 런타임 시점에 프록시를 이용하여 적용
AOP 용어
Join point
Advice 가 적용될 수 있는 위치, AOP 를 적용할 수 있는 모든 지점, 스프링의 경우 메소드 실행 지점
Advice
행하고싶은 로직(부가 기능)
Pointcut
Advice 가 적용될 위치
Advisor
1 Pointcut + 1 Advice
Target
Advice 받는 객체
스프링에서 적용
자동 프록시 생성기
1. @Aspect 정보를 기반으로 Advisor 로 변환해서 저장
2. Advisor 기반으로 프록시 생성
@Aspect
자동 프록시 생성기는 @Aspect 찾아서 Advisor 로 만들어줌
Advice 종류
@Around
메소드 호출 전후에 수행, 반환 값 변환, 예외 변환 등
@Before
Join point 가 실행 되기 전에 실행
@AfterReturning
Join point 가 정상 완료 후 실행
@AfterThrowing
메서드가 예외를 던지는 경우 실행
@After
Join point 의 정상, 예외 관계없이 실행
'Spring' 카테고리의 다른 글
ArgumentResolver 와 ReturnValueHandler (0) | 2024.08.14 |
---|---|
Servlet 과 DispatcherServlet (0) | 2024.08.14 |
Spring Boot 에서 사용자와 데이터 교환 방법 (1) | 2024.06.30 |
@ModelAttribute 는 언제 어떻게 왜 쓰는가 (0) | 2024.06.29 |