스프링 프레임 워크 (10) AOP(1) AOP의 의미 및 주요 개념들

넙데데맨·2022년 4월 27일
0
post-thumbnail

AOP?

객체 지향 프로그래밍 OOP(Object-Oriented Programming)는
사용자가 원하는 업무를 분석해 그에 대한 로직을 구현했었다.

이런 업무와 관련된 것과 별개로 개발자나 운영자의 관점에서의 프로그램도 필요할 것이다. (로그, 보안, 트랜잭션 처리)
따라서 이런 관점별로 분리해 모듈화 하겠다는 것이 AOP(Aspect Oriented Programming)

Primary(Core) Concern 주 업무 로직
Cross-cutting Concern 관점이 다른 로직(로그 보안 트랜잭션 등등)으로 다른 주 업무에 공통적으로 사용될 수 있는 코드들

public int total() {
		long start= System.currentTimeMillis(); // 실행 시간을 체크하기 위한 Crosscutting Concern
		int result = kor+eng+math+com; // 주 업무
		try {
			Thread.sleep(200);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		long end= System.currentTimeMillis(); 
		String message = (end-start) + "ms가 걸렸습니다."; 
		System.out.println(message); // 실행 시간을 체크하기 위한 Crosscutting Concern
		return result;
	}

두 로직을 분리하여 Cross-cutting Concern을 호출 후 Core Concern을 호출한다.

AOP 주개념

  • Target 부가기능 부여할 대상(주 업무)
  • Advice Cross-Cutting Concern을 분리한 후 정의한 코드
  • JointPoint 타깃의 코드가 실행될 때 나타나는 시점 Advice를 삽입할 수 있는 위치 및 메소드
  • PointCut Advice를 적용할 JointPoint를 선별하는 기능 정의한 모듈
  • Aspect Crosscutting Concern을 모듈화 한 것으로 Advice와 PointCut을 함께 가짐
  • Proxy Target을 감싸 요청을 대신 받아주는 Wrapping Object로 사용자가 Target 호출 시 Proxy가 호출을 받아 선처리 - 타겟 메소드 실행 - 후처리 실행시키도록 구성
  • Weaving 지정된 객체에 Aspect를 적용해 새 프록시 객체를 생성하는 과정

Advice 분류

Crosscutting Concern을 어떻게 주입할 것인가에 따른 분류(Advice 메소드의 동작 시점)

  • Before 메소드 실행 전에 동작
  • After 메소드 실행 후 동작
  • After returnning 메소드 정상 실행 후 동작
  • After throwing 메소드 예외 발생 후 동작
  • Around 메소드 호출 이전 이후, 예외발생 등 모든 시점에서 동작
profile
차근차근

0개의 댓글