개발자 키우기
AOP - 용어 정리 본문
AOP는 소프트웨어 개발에서 횡단 관심사 (cross-cutting concern) 를 다루기 위한 프로그래밍 패러다임이다.
여러 부분에서 반복적으로 나타나는 관심사를 분리하여 모듈화 하고, 그 관심사를 효과적으로 캡슐화 및 관리한다.
Proxy ( 중개인 )
AOP가 적용된 객체를 감싸는 중간 객체로, 실제 객체에 대한 호출을 가로채거나 변경할 수 있게 해 준다.
프락시를 사용하여 Aspect가 조인 포인트에서 동작할 수 있도록 한다
Aspect ( 클래스 - 모듈화 시킨 부가기능 )
횡단 관심사를 정의한 모듈 또는 클래스이다. 트랜잭션이나 로깅, 성능 체크 등을 정의한다.
JoinPoint ( 전후 - 부가기능 실행 위치 지정 )
애플리케이션의 실행 중에 횡단 관심사가 적용될 수 있는 특정한 지점을 나타낸다.
PointCut ( 범위 - 부가기능 실행 위치 )
JoinPoint의 부분집합으로 실제 Advice가 적용되는 JoinPoint를 나타낸다.
Advice ( 메서드 - 부가기능 구현체 )
조인 포인트에서 수행할 동작 또는 코드이다. ( @Aspect 클래스에서 작성함 )
@Around (전후) : 어드바이스가 타깃 메서드를 감싸서 호출 전과 후에 기능을 수행
@Before (이전) : 어드바이스 타겟 메서드가 호출되기 전에 어드바이스 기능을 수행
@After(이후) : 타겟 메서드의 결과에 상관없이 완료되면 어드바이스 기능을 수행
@AfterReturning(정상적 반환 이후) : 어드바이스 타겟 메서드가 성공적으로 리턴 후에 기능을 수행
@AfterThrowing(예외 발생 이후) : 어드바이스 타겟 메서드 수행 중 예외를 던지면 기능을 수행
JDK Dynamic Proxy와 CGLIB의 차이점
https://gmoon92.github.io/spring/aop/2019/04/20/jdk-dynamic-proxy-and-cglib.html
'Back-end > Springboot' 카테고리의 다른 글
PropertyEditor / Converter/ Formatter (1) | 2023.11.13 |
---|---|
dispatcherservlet doDispatch 어뎁터 동작 파 (0) | 2023.11.11 |
Spring의 주요 특징 (0) | 2023.10.16 |
ThreadLocal 사용하기 (0) | 2023.07.19 |
스프링 Formatter 사용 (0) | 2023.07.12 |