본문 바로가기

개발/Spring

스프링 AOP - 개념

반응형

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