- Spring AOP 정의2022년 11월 29일
- starryeye
- 작성자
- 2022.11.29.:35
소프트웨어 개발에서 변경이 필요할 때...
변경 지점이 하나가 될 수 있도록 설계하고 개발해야한다..
핵심 기능과 부가 기능을 분리하여..
부가 기능을 어느 한 군데서만 관리하면 되도록 해보자..
이를 위한..
관점 지향 프로그래밍 AOP (Aspect Oriented Programming)
AOP는 OOP를 대체하기 위해 나온 프로그래밍 방식이 아니다.
횡단 관심사를 처리하기 어려운 OOP의 부족한 부분을 보조하기 위해 개발되었다.
AOP 적용 방법은 총 3가지가 있다.
1. 컴파일 시점에 부가 기능 적용(원본 코드 조작, Weaving)
2. 클래스 로딩 시점에 부가 기능 적용(.class 파일 조작)
3. 런타임 시점에 부가 기능 적용(프록시 방식)
스프링은 위 3가지 방식 중..
프록시 방식의 AOP를 사용한다.
<참고>
프록시 방식의 AOP는 스프링 컨테이너, DI, 빈 포스트 프로세서 등의 개념을 사용해야 한다.
그래서 생긴.. 단점..
프록시를 통하지 않는다면.. AOP는 적용 되지 않는다.
ex. 당연하지만.. 의존성 주입을 받지 않고..
바로 new 생성자를 호출 하여 생성한 객체의 참조는..
프록시가 적용되지 않는다.
AOP 용어
Join Point
AOP가 적용될 수 있는 모든 지점 (후보 군)
(스프링은 프록시 방식의 AOP이므로 모든 메서드 실행 지점이다.)
Pointcut
조인 포인트 중에서 어드바이스가 적용될 위치를 선별
AspectJ 표현식 사용
Advice
부가 기능에 해당 한다.
Around, Before, After 등과 같은 다양한 종류의 어드바이스 존재
Aspect
여러 어드바이스와 포인트 컷이 함께 존재하는 하나의 모듈
(@Aspect 를 생각하면 됨)
Advisor
하나의 어드바이스 + 하나의 포인트컷
AOP 객체
AOP 기능을 구현하기 위해 만든 프록시 객체
스프링에서는 JDK 동적 프록시 or CGLIB 프록시 이다.
'Spring > Core' 카테고리의 다른 글
@Configuration 와 싱글톤 (0) 2023.07.13 @Async, TaskExecutor, CompletableFuture (0) 2023.06.17 Spring에서 프록시 사용 6 (0) 2022.11.29 Spring에서 프록시 사용 5 (0) 2022.11.20 Spring에서 프록시 사용 4 (0) 2022.11.19 다음글이전글이전 글이 없습니다.댓글