게으른 개발자의 끄적거림

Java Spring 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)이란?

끄적잉 2023. 6. 27. 21:57
반응형

 Java Spring AOP는 Spring 프레임워크의 핵심 기능 중 하나로, 애플리케이션의 관점 지향 프로그래밍(Aspect-Oriented Programming)을 구현하기 위한 기술입니다. 관점 지향 프로그래밍은 여러 모듈에 걸쳐 적용되는 공통 관심 사항(Aspect)을 분리하여 모듈화하고, 이를 기존의 객체 지향 프로그래밍 모듈에 적용하는 방법을 제공합니다.

 

 AOP는 애플리케이션의 비즈니스 로직에서 분리되는 관심 영역을 정의하고, 이를 핵심 비즈니스 로직과 분리하여 코드 중복을 줄이고 유지 보수성을 높이는 데에 도움을 줍니다. Spring AOP는 Proxy 기반의 AOP 구현체로써, 런타임 시점에 프록시 객체를 동적으로 생성하여 핵심 비즈니스 로직을 호출하기 전후에 관심 영역의 로직을 삽입하는 방식으로 동작합니다.

Spring AOP의 주요 구성 요소는 다음과 같습니다:

 

 

  1. Aspect(관점): 애플리케이션에서 적용하고자 하는 공통 관심 영역을 나타냅니다. 예를 들어, 로깅, 트랜잭션 관리 등이 Aspect의 예입니다.
  2. Join point(조인 포인트): 애플리케이션 실행 중에 관심 영역이 적용될 수 있는 특정 시점을 나타냅니다. 메서드 호출, 예외 발생 등이 Join point의 예입니다.
  3. Advice(조언): 관심 영역이 조인 포인트에 삽입되어 실행될 때 수행되는 동작을 나타냅니다. Before, After, Around 등이 Advice의 종류입니다.
  4. Pointcut(포인트컷): 실제로 어떤 Join point에 Advice를 적용할지를 정의하는 것으로, Join point를 선택하기 위한 표현식입니다. 예를 들어, 특정 패키지의 모든 메서드, 특정 어노테이션이 적용된 메서드 등을 포함할 수 있습니다.
  5. Introduction(도입): 기존의 클래스에 새로운 메서드나 인터페이스를 추가하는 기능입니다. 도입을 통해 기존 클래스에 새로운 기능을 주입할 수 있습니다.
  6. Target object(대상 객체): 핵심 비즈니스 로직이 있는 객체입니다. 프록시 객체를 생성하여 대상 객체를 감싸는 형태로 AOP가 적용됩니다.

 

 Spring AOP는 다양한 방식으로 설정할 수 있습니다. XML 기반 설정이나 Java Configuration을 사용하여 AspectJ 스타일의 설정을 할 수 있습니다. 주요한 설정 방법으로는 @Aspect 어노테이션을 이용한 설정, XML 기반 설정 파일에서 AOP 설정 등이 있습니다.

 

 

 Spring AOP를 사용하면 공통된 기능을 쉽게 관리하고 재사용할 수 있으며, 핵심 비즈니스 로직에 대한 변화 없이 횡단 관심 영역의 변경을 적용할 수 있습니다. 이를 통해 코드의 유연성과 재사용성을 높일 수 있습니다.

반응형