AOP
- 기본적인 개념은 공통 관심 사항을 구현한 코드를 핵심로직을 구현한 코드 안에 삽입한다는 것.
AOP 용어
- Aspect : 공통 코드 ( ex : 트랙잭션, 로깅 )
- Advice : 공통코드를 적용하는 시점. ( 특정 메소드 실행전, 특정 메소드 실행후 등등 )
- Joinpoint : Advice가 적용 가능한 지점.
- Pointcut : JointPoint중에서 Aspect가 적용되는 위치.
- Introduction : 함수나 멤버변수를 추가적으로 선언하는 기능
- Weaving : 핵심로직에서 Aspect가 동작이 되는 것.
Weaving 방식
1. 컴파일 시
2. 클래스 로딩시
3. 런타임 시
Spring에서 제공되는 AOP.
- @AspectJ ( 어노테이션 방식 )
- Schema-based AOP ( XML 방식 )
시스템의 요구사항이나 설계에 따라 상황에 맞는 AOP를 사용하면 되지만,
Schema-based AOP가 가진 단점을 이해해야 한다.
1. XML방식이기 때문에 완전한 캡슐화 되지는 않는다.
- 설정파일에 XML과 빈(Bean)에 대한 선언이 분할되어 사용되기 때문이다.
2. XML에 선언 된 포인트 컷을 결합 할 수 없습니다.
@Pointcut("execution(* get*())")
public void propertyAccess() {}
@Pointcut("execution(org.xyz.Account+ *(..))")
public void operationReturningAnAccount() {}
@Pointcut("propertyAccess() && operationReturningAnAccount()")
public void accountPropertyAccess() {}
<aop:pointcut id="propertyAccess"
expression="execution(* get*())"/>
<aop:pointcut id="operationReturningAnAccount"
expression="execution(org.xyz.Account+ *(..))"/>
'프로그래밍 > Spring' 카테고리의 다른 글
[Spring]AOP(Aspect Oriented Programming) Schema-Based (0) | 2021.01.26 |
---|---|
[Spring]AOP(Aspect Oriented Programming) @AspectJ (0) | 2021.01.22 |
[Spring]DI(Dependency Injection) (0) | 2021.01.20 |
Spring Boot @Transactional 설정 및 유의점 (0) | 2018.02.19 |
[Spring] DB Connection timeout (0) | 2016.01.21 |