반응형
AOP(Aspect Oriented Programming)는 OOP를 보완하는 수단으로,
Aspect를 모듈화 할 수 있는 프로그래밍 기법
흩어진 관심사(Crosscultting Concerns) : 여러 클래스, 여러 메소드에 나타나는 비슷한 코드, 비슷한 필드
예) 트랜잭션 처리
Aspect
- 흩어진 관심사들을 각각 모아 독립 적으로 정의 > 모듈화 한 것
- Advice : 해야할 일들
- Pointcut : 어디에 적용해야 하는지
AOP의 주요 개념
- Aspect와 Target(적용이 되는 대상)
- Join point와 pointcut
** Join point : 합류점, 메소드 실행 시점, 행성자 호출, 필드 접근전, 필드에 값을 가지고 올때 등등
** pointcut : 합류점, 메소드 실행 시점, 행성자 호출, 필드 접근전, 필드에 값을 가지고 올때 끼워 넣어라!
** 메소드를 실행할때 Advice를 끼워 넣어라
AOP 구현체
- 자바
- AspectJ
- Spring AOP
AOP 적용 방법
- 컴파일 : java 파일을 class 파일로 만들 때 aspect 적용
- 로드 타임 : class 파일을 로딩 하는 시점에 바이트 코드를 변경 하여 aspect 적용
- 런타임 : 어떤 빈을 만들 때 그 빈을 감싸고 있는 프록시 빈을 만든다. 프록시 빈이 가지고 있는 어떤 빈의 메소드를 호출하기 직전에 aspect를 호출한다.
반응형
'개발 > Spring' 카테고리의 다른 글
AOP - @AOP (0) | 2021.04.27 |
---|---|
AOP - 프록시 기반 AOP (0) | 2021.04.27 |
SpEL(스프링 Expression Language) (0) | 2021.04.23 |
데이터 바인딩 추상화 Converter와 Formatter (0) | 2021.04.23 |
데이터 바인딩 추상화: PropertyEditor (0) | 2021.04.22 |