AOP

기본 용어

  1. 관심사
    • 어플리케이션을 개발하기 위한 구현 기능들
    • 어플리케이션의 비즈니스 중요 기능들
  2. 횡단 관심사
    • 여러 모듈에 걸쳐 공통적이고 반복적으로 필요로 하는 처리 내용
  3. 횡단 관심사 분리
    • 횡단 관심사를 한 곳으로 모는 것
    • 실현하는 방법 = 관점 지향 프로그래밍

Aspect Oriented Programming

여러 비즈니스 모듈에서 공통으로 사용되는 횡단 관심사를 중심으로 설계, 개발하는 프로그래밍 기법

  • 객체지향 프로그래밍보다 완성도 높인 프로그래밍 패러다임
  • 횡단 관심사와 이에 영향 받는 객체간의 결합도를 낮춘다.
  • 장점
    1. 전체 코드에 흩어져 있는 관심사들이 하나의 장소로 응집
    2. 기타 비즈니스 모듈들은 본질적인 처리들을 위한 핵심 기능에 대한 코드만 기술
    3. 공통 관심사들은 공통 모듈로 옮겨지므로 코드가 깔끔해짐
  • 개발자들은 횡단 관심 모듈을 각각 독립된 모듈로 중복없이 작성
  • DI 설정을 통해 핵심 관심 모듈의 적합한 위치에 결합

중요 용어

  1. Advice: 조인 포인트에 삽입되어 실행되는 코드
    • 횡단 관심사 구현 부분
  2. Join Point: 횡단 관심사가 실행되는 지점
    • Advice 적용 가능한 지점
    • 클래스 인스턴스 생성 시점, 메소드 호출 시점, 예외 발생 시점
  3. Pointcut: 수많은 Join Point 중 실제 적용될 지점
    • 표현식으로 선별
    • 설정은 XML, 어노테이션 방식으로 설정
  4. Aspect: 공통 관심사의 추상적 명칭
    • Advicedhk Pointcut 정보를 조합하여 합친 개념
  5. Target: 핵심 로직을 구현하는 클래스
    • 횡단 관심사를 적용받게 되는 대상으로 어드바이스가 적용되는 객체
  6. Introduction: Target애 없는 새로운 메서드나 인스턴스 변수를 추가하는 것
  7. Weaaving: Advice와 Target이 결합되어 Proxy객체를 만드는 과정
  8. Porxy: Advice가 적용되었을 때 만들어지는 객체

Advice의 유형

  1. before: 조인포인트 앞에서 실행할 어드바이스
  2. after: 조인포인트 뒤에서 실행할 어드바이스
    • 예외, 일반 종료
  3. after returning: 조인포인트가 완전히 종료된 다음 실행되는 어드바이스
    • 일반종료, 예외
  4. around: 조인포인트 앞뒤에서 실행되는 어드바이스
  5. after throwing: 조인포인트에서 예외가 발생했을 때 실행되는 어드바이스

스프링 AOP 설계 방식

Proxy 패턴 방식을 통해 구현

  • 어떤 객체를 사용하고자 할 경우 객체를 직접적으로 참고하는 것이 아니라 그 객체를 대리하는 객체를 통해 대상 객체에 접근하는 방식
  • 스프링 컨테이너 초기화 과정에서 스프링 빈 객체를 대행할 프록시 객체 생성
  • 객체 핵심 코드에 대한 영향 없이 객체의 접근 전, 후에 대한 중요 처리 가능

AOP 구현 3가지 방법

  1. XML을 이용한 AOP 구현
    • XML 스키마 기반의 POJO클래스를 이용한 구현 방식
  2. Annotation을 이용한 AOP 구현
    • 애노테이션 기반의 구현 방식
  3. 자바 코드를 이용한 AOP 구현
    • JAVA 기반의 구현 방식

homebdy
homebdy 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람.
comments powered by Disqus