AOP (Aspect-Oriented Programming)

wkdtmddus·2023년 8월 19일
0
post-custom-banner

AOP(Aspect-Oriented Programming)은 소프트웨어 개발 패러다임 중 하나로, 애플리케이션의 핵심 비즈니스 로직을 횡단 관심사(cross-cutting concerns)와 분리하여 모듈화하는 기법입니다.
횡단 관심사란, 여러 모듈이나 클래스에서 공통으로 적용되는 기능이나 로직을 말합니다.
예를 들어 로깅, 보안, 트랜잭션 관리 등이 횡단 관심사의 예시입니다.


스프링 부트에서 AOP를 활용하면, 이러한 횡단 관심사를 더 쉽게 구현하고 관리할 수 있습니다.
스프링 프레임워크의 핵심 모듈 중 하나인 "spring-aop" 모듈을 기반으로 하며, AOP를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

  1. 관심사 분리 :

    핵심 비즈니스 로직과 횡단 관심사를 분리하여 코드의 모듈화와 재사용성을 높일 수 있습니다.

  2. 로깅 및 모니터링 :

    메서드 호출 정보, 파라미터, 반환값 등을 로깅하거나 모니터링할 수 있습니다.

  3. 보안 :

    인증 및 권한 검사와 같은 보안 관련 작업을 수행할 수 있습니다.

  4. 트랜잭션 관리 :

    메서드 실행 전후에 자동으로 트랜잭션을 시작하거나 커밋하는 등의 트랜잭션 관리 작업을 할 수 있습니다.


AOP는 주로 아래와 같은 개념으로 구성됩니다.

  • Aspect :

    횡단 관심사를 구현한 모듈을 말합니다.
    로깅, 보안 등의 관심사가 여기에 해당됩니다.

  • Advice :

    횡단 관심사의 실제 구현 내용을 말합니다.
    예를 들어, 메서드 실행 전후에 특정 동작을 실행하는 코드가 Advice에 해당합니다.

  • Pointcut :

    어느 지점에서 Advice를 실행할 것인지를 지정하는 표현식입니다.
    예를 들어, 특정 패키지의 모든 메서드 또는 특정 어노테이션이 부여된 메서드 등을 지정할 수 있습니다.

  • Join Point :

    Advice가 실행될 수 있는 시점을 말합니다.
    메서드 호출, 필드 접근 등이 Join Point의 예시입니다.


스프링 부트에서 AOP를 사용하기 위해서는 주로 어노테이션을 활용한 방식이 많이 사용됩니다.
@Aspect 어노테이션을 사용하여 Aspect 클래스를 정의하고, @Before, @After, @Around 등의 어노테이션을 사용하여 Advice를 지정합니다.
또한, @Pointcut 어노테이션을 사용하여 Pointcut을 정의하여 Advice가 실행될 조건을 명시할 수 있습니다.

이렇게 설정된 AOP 관련 구성은 스프링 부트의 IoC 컨테이너에 의해 관리되며, 애플리케이션 내의 여러 지점에서 자동으로 횡단 관심사가 적용될 수 있도록 합니다.

post-custom-banner

0개의 댓글