logo

스프링 AOP 튜토리얼

  1. AOP란 무엇입니까?
  2. AOP는 어디에 사용되나요?
  3. AOP 개념 및 용어
  4. 스프링 AOP 구현

관점 지향 프로그래밍 (AOP)는 모듈성을 제공한다는 점에서 OOP를 칭찬합니다. 그러나 모듈성의 핵심 단위는 클래스보다는 측면입니다.

AOP는 프로그램 논리를 별개의 부분(관심사항이라고 함)으로 나눕니다. 모듈성을 높이는 데 사용됩니다. 교차적 우려 .

교차적 관심 전체 애플리케이션에 영향을 미칠 수 있는 문제이며 트랜잭션 관리, 인증, 로깅, 보안 등과 같이 가능한 한 코드의 한 위치에 중앙 집중화되어야 합니다.


왜 AOP를 사용하는가?

실제 로직 전후 또는 주변에 추가 문제를 동적으로 추가하는 플러그형 방식을 제공합니다. 아래와 같이 클래스에 10개의 메서드가 있다고 가정합니다.

 class A{ public void m1(){...} public void m2(){...} public void m3(){...} public void m4(){...} public void m5(){...} public void n1(){...} public void n2(){...} public void p1(){...} public void p2(){...} public void p3(){...} } 

m에서 시작하는 5개의 메소드, n에서 시작하는 2개의 메소드, p에서 시작하는 3개의 메소드가 있습니다.

시나리오 이해 m에서 시작하는 메서드를 호출한 후 로그를 유지하고 알림을 보내야 합니다.

AOP가 없는 문제 m으로 시작하는 메소드에서 (로그를 유지하고 알림을 보내는) 메소드를 호출할 수 있습니다. 이러한 시나리오에서는 5가지 메서드 모두에서 코드를 작성해야 합니다.

하지만 나중에 고객이 알림을 보낼 필요가 없다고 하면 모든 방법을 변경해야 합니다. 이는 유지 관리 문제로 이어집니다.

AOP를 이용한 솔루션 메소드에서 메소드를 호출할 필요는 없습니다. 이제 클래스 메서드에서 로그 유지, 알림 보내기 등과 같은 추가 문제를 정의할 수 있습니다. 해당 항목은 xml 파일에 제공됩니다.

앞으로 클라이언트가 알리미 기능을 제거하라고 하면 xml 파일에서만 변경하면 됩니다. 따라서 AOP에서는 유지보수가 쉽습니다.

마침표 키

AOP는 어디에 사용되나요?

AOP는 주로 다음과 같은 경우에 사용됩니다.

  • 선언적 트랜잭션 관리와 같은 선언적 엔터프라이즈 서비스를 제공합니다.
  • 이를 통해 사용자는 사용자 정의 측면을 구현할 수 있습니다.

AOP 개념 및 용어

AOP 개념과 용어는 다음과 같습니다.

  • 조인 포인트
  • 조언
  • 포인트컷
  • 소개
  • 대상 객체
  • 측면
  • 인터셉터
  • AOP 프록시
  • 제직

조인 포인트

조인 포인트는 메소드 실행, 예외 처리, 필드 액세스 등과 같은 프로그램의 모든 지점입니다. Spring은 메소드 실행 조인 포인트만 지원합니다.


조언

조언은 특정 조인 포인트에서 측면이 취하는 조치를 나타냅니다. 다양한 유형의 조언이 있습니다:

  • 조언 전 : 조인포인트 이전에 실행됩니다.
  • 조언을 반환한 후 : 조인트 포인트가 정상적으로 완료된 후에 실행됩니다.
  • 조언을 던진 후 : 예외를 발생시켜 메소드가 종료되면 실행됩니다.
  • 이후 (최종) 조언 : 정상 복귀 또는 예외 복귀 여부에 관계없이 Join Point 종료 이후에 실행됩니다.
  • 주변 조언 : Join Point 전후에 실행됩니다.

포인트컷

Join Point를 일치시키는 AOP의 표현언어이다.


소개

이는 유형에 대한 추가 메소드 및 필드의 도입을 의미합니다. 이를 통해 조언된 개체에 새로운 인터페이스를 도입할 수 있습니다.


대상 객체

즉, 하나 이상의 측면에서 조언을 받는 것이 객체입니다. Spring AOP는 런타임 프록시를 사용하여 구현되므로 Spring에서는 프록시 객체라고도 합니다.


측면

조언, 조인포인트 등을 포함하는 클래스입니다.


인터셉터

단 하나의 조언만 담고 있는 측면이다.


AOP 프록시

AOP 프레임워크에서 생성된 측면 계약을 구현하는 데 사용됩니다. Spring 프레임워크에서는 JDK 동적 프록시 또는 CGLIB 프록시가 됩니다.


제직

Aspect를 다른 애플리케이션 유형이나 객체와 연결하여 조언된 객체를 생성하는 프로세스입니다. 위빙은 컴파일 타임, 로드 타임 또는 런타임에 수행될 수 있습니다. Spring AOP는 런타임에 위빙을 수행합니다.

JSON 파일을 읽는 방법

AOP 구현

AOP 구현은 다음을 통해 제공됩니다.

  1. 측면J
  2. 스프링 AOP
  3. 제이보스 AOP

스프링 AOP

Spring AOP는 아래 3가지 방법으로 사용될 수 있다. 그러나 널리 사용되는 접근 방식은 Spring AspectJ Annotation Style입니다. Spring AOP를 사용하는 3가지 방법은 다음과 같습니다.

  1. Spring1.2 이전 스타일(dtd 기반)(Spring3에서도 지원됨)
  2. AspectJ 주석 스타일로
  3. Spring XML 구성 스타일(스키마 기반)

참조 링크

스프링 소스 AOP
스프링 소스 AOP API
위키피디아