AOP
21 Feb 2017 | java aopAOP 의 특징
-
정의 공통 관심사를 개별 모듈로 분리하고 여러 영역에 적용 가능하게 함.
-
장점 예외처리, 로깅 처리, 트랜젝션 처리 등을 프로젝트 후반에 결정 가능하고, 그에 따른 변경에 자유롭다.
-
단점 의도치 않은 무분별한 적용으로 인해 전체 성능이 저하될 수 있다.
-
예시 spring @transactional
용어 정리
-
조인 포인트 aop 를 사용하여 추가 로직을 삽입할 수 있는 특정 지점.
-
어드바이스 특정 조인 포인트에서 실행되는 코드 ( 비포 / 애프터 어드바이스 등)
-
포인트 컷 언제 어드바이스를 실행할 지 정의할 대 사용하는 조인포인트의 모음.
-
애스펙트 어드바이스와 포인트 컷의 조합
-
위빙 코드 내에 애스펙트를 실제로 삽입하는 과정
-
타겟 실행 흐름이 AOP 에 의해 수정된 객체
-
인트로덕션 추가 메소드나 필드를 도입해 객체의 구조를 수정
-
정적 AOP 빌드 시에 바이트 코드를 직접 수정, 성능이 좋으나 재컴파일 필요. 예) AspectJ 컴파일 시점 위빙.
-
동적 AOP 위빙 절차가 런타임 시점에 동적으로 수행됨, 정적 AOP 에 비해 성능은 떨어지나 재컴파일 필요 없음. 예) Spring AOP
-
CGLIB 동적으로 바이트 코드 생성. 인터페이스 없어도 사용 가능.
-
JDK 동적 프록시 인터페이스를 가지는 객체의 프록시만 지원함.