AOP(Aspect Oriented Programming)의 약자로 여러 객체에 공통으로 적용할 수 있는 기능을 구분 하여 재사용성을 높여주는 기능제공
Aspect : AOP의 공통기능
Aspect : 트랜잭션 관리처럼 여러 type, Object들이 공통적으로 갖는 관심
Spring AOP에서는 특정 Interface를 구현하거나 @Aspect annotation을 붙여서 사용가능
Joint Point : 특정 Method를 실행하거나 Exception을 처리할 때 처럼 프로그램이 실행되고 있는 어느 한 시점
String AOP에서는 Method 실행 시점을 의미
Advice : 특정 Joint Point나 Aspect에 행할 행동을 의미
around, before,after 등의 종류가 존재
Spring AOP를 포함해서 많은 AOP 프레임워크들은 advice를 Interceptor 로 간주 하며
Join Point Around의 Interceptor 체인을 관리
Pointcut : Join points의 한 종류
advice는 pointcut에 일치하는 Join point에 실행됨
- 특정 이름의 메소드 실행
Spring AOP는 AspectJ의 pointcut 표현방식을 기본으로 함
Introduction : 이익에 따라 추가적인 method나 field를 정의하는 것
Spring AOP는 advised object에 새로운 interface와 그 구현체를 introduce하도록 허가함
Target Object : 하나 또는 그 이상의 Aspect에 의해 advised되는 객체
advised object라고도 함
Spring AOP에서는 언제나 runtime proxies를 사용하므로 proxied object라고도 할 수 있음
AOP proxy : aspect contracts를 구현하기 위해 AOP 프레임워크에 의해서 만들어진 Object
Spring Framework에서 JDK dunamic proxy 또는 CGLIB proxy를 사용
Weaving : aspects와 어플리케이션의 object 또는 type들을 연결하여 advised object들을 만들어내는 과정
compile time , load time , runtime 모두에 실행될 수 있음
다른 순수 자바 AOP프레임워크들과 마찬가지로 Spring AOP도 runtime에 weaving을 수행
advice 종류
- Before advice : join point가 실행되기 이전 시점에 실행되는 advice
Exception을 던지지 않는 이상 join point의 실행 막을 수는 없음
- After returning advice : join point가 완료되고 리턴한 다음에 실행되는 advice
- After throwing advice : join point가 Exception을 던지며 종료된 다음에 실행되는 advice
- After (finally) advice : join point가 정상적으로 종료된 여부에 관계 없이 항상 실행되는 advice
- Around advice : method 호출처럼 join point를 둘러싸는 advice
join point를 실행할 것인가 아니면 자체적인 값을 리턴하거나 Exception을 던져서 생략할 것인가 결정할 수도 있음
AOP 종류
Spring AOP
스프링에서 AOP를 사용할 때 기본적으로 사용하는 방식
JDK dynamic proxy
기본적으로 사용되는 Proxy interface로 정의된 클래스에만 사용가능
CGLIB proxy interface 없이 바로 작성된 concrete class도 proxy도 만들 수 있음
설정에 따라 CDLIB만 사용하도록 강제할 수 있음
Full AspectJ
AspectJ compiler 또는 weaver를 사용해서 AOP기능을 사용하는 방식
JVM에 javaagent ..../aspectjweaver.jar 옵션을 설정
field 와 method 모두 advice를 설정하는 것이 가능하여 find-grained object를 이용하는데 유리
Spring에서는 spring-aspects.jar 라이브러리를 제공
형사정책연구원 협동총서_부동산+시장질서+확립을+위한+중점+대응전략+최종보고서(2021 출판) (0) | 2022.11.06 |
---|---|
AOP core concern(primary concern) 20221104 (0) | 2022.11.04 |
Model Driven Architecture 20221102 (0) | 2022.11.02 |
Rational Unified Process 20221102 (0) | 2022.11.02 |
aix 리눅스 유닉스 계열 압축과 해제 방법 (0) | 2020.08.15 |
댓글 영역