dev/java

[JAVA] AOP 용어 정리

재삐신생 2017. 3. 5. 18:37
반응형

AOP(Aspect Oriented Programming) 말 그대로 관점 지향 프로그래밍이다.


예로 스프링에서 @Transactional 어노테이션이 AOP로 구현된다.

코드가 많은 트랜잭션 처리를 쉽게 할 수 있다는 장점이 AOP를 잘 설명 해주는 것 같다.


기본적인 용어

crosscutting concerns(횡단 관심): OOP로 모듈화 시키기 어려운, 특정 처리구문(?) 예로 로깅, 보안, 트랜잭션, 예외처리, 등등

advice(어드바이스): 실행할 부가적인 기능(실제 코드)

target(타겟): 어드바이스를 적용할 대상 객체

joinpoint(조인포인트): 어드바이스를 삽입할 특정 지점

pointcut(포인트컷): 조인포인트를 선별하기 위한 정의

weaving(위빙): 포인트컷으로 선별된 조인포인트에 어드바이스를 삽입하는 과정


위빙 방법

Spring AOP

프록시 기반(Proxy-based) AOP이며, JDK dynamic proxies 와 CGLIB을 사용할 수 있다.

둘의 차이점은 인터페이스 유무와 성능정도가 되겠다.

둘 모두, Runtime Weaving이라, 런타임 오버헤드가 있다.


AspectJ

기본적으로 컴파일 시점에 위빙이 된며, LTW를 사용할 수도 있다.

CTW(compile-time weaving): 컴파일 시점에 위빙

LTW(load-time weaving): JVM에서 클래스 파일 로드 시점에 위빙

런타임 오버헤드가 없다는 것이 가장 큰 장점이 아닌가 싶다.

둘의 차이점은 컴파일 및 실행 설정에 불과하다.


ref:

http://www.eclipse.org/aspectj/doc/next/devguide/index.html

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html#aop-understanding-aop-proxies


반응형

'dev > java' 카테고리의 다른 글

Spring @Validated 어노테이션 사용하기  (0) 2018.07.22
change maven local repository path  (1) 2018.04.09
java.util.LinkedHashMap cannot be cast to ...  (0) 2017.11.26
JPA 개념  (0) 2017.04.05