Programming/스프링(spring) - Enterprise

4. 스프링(spring)/ AOP(aspect oriented programming, 관전 지향 프로그래밍)

esoog Polaris 2023. 7. 11. 21:10
반응형

# AOP (Aspect-Oriented Programming)은 관점 지향 프로그래밍

 

AOP는 프로그램의 핵심 로직과 별개로 공통적으로 발생하는 부가 기능을 모듈화하여 재사용성과 유지보수성을 향상시키는 목적을 가지고 있습니다. 응집도 향상

간단히 말하면, AOP는 애플리케이션에서 발생하는 여러 모듈 간의 관심사를 분리하여 모듈화하는 프로그래밍 패러다임입니다. 이를 통해 핵심 비즈니스 로직과 공통적인 기능들을 분리하여 코드의 중복을 줄이고, 관심사에 집중할 수 있습니다.

AOP는 주로 다음과 같은 용어와 개념으로 설명됩니다:

1. 관점 (Aspect): 여러 모듈에 걸쳐 적용되는 공통 기능을 말합니다. 예를 들어, 로깅, 트랜잭션 관리, 보안 등이 관점에 해당할 수 있습니다.

2. 조인 포인트 (Join Point): 관점이 적용될 수 있는 프로그램 내의 특정 지점을 말합니다. 메서드 실행 시점, 예외 발생 시점 등이 조인 포인트에 해당할 수 있습니다.

3. 어드바이스 (Advice): 조인 포인트에서 실행되는 실제 동작을 말합니다. 예를 들어, 조인 포인트 전에 실행되는 'Before' 어드바이스, 조인 포인트 후에 실행되는 'After' 어드바이스 등이 있습니다.

4. 포인트컷 (Pointcut): 어떤 조인 포인트를 선택할 것인지를 정의하는 것을 말합니다. 일반적으로 특정 패키지, 클래스, 메서드 등을 기준으로 포인트컷을 설정합니다.

5. 어드바이저 (Advisor): 포인트컷과 어드바이스를 결합한 것을 말합니다. 포인트컷이 어떤 조인 포인트를 선택할지를 정의하고, 어드바이스가 실제 동작을 정의합니다.

스프링 AOP는 프록시 패턴을 기반으로 동작합니다. 스프링은 런타임 시점에 프록시 객체를 생성하여 원본 객체를 감싸고, 관심사에 해당하는 부가 기능을 수행하는 방식으로 AOP를 구현합니다. 이를 통해 프로그래머는 핵심 비즈니스 로직에 집중할 수 있고, AOP를 통해 공통 기능을 쉽게 추가할 수 있습니다.

예를 들어, 트랜잭션 관리는 여러 서비스 클래스에서 공통적으로 필요한 기능입니다. AOP를 사용하면 트랜잭션 관리와 같은 공통 기능을 별도의 모듈로 분리하여 재사용할 수 있습니다. 이렇게 분리된 공통 모듈은 필요한 서비스 클래스에 적용되어 트랜잭션 관리가 자동으로 수행됩니다.

요약하자면, 스프링 AOP는 관심사의 분리를 통해 공통 기능을 모듈화하고 재사용성을 높이는 프로그래밍 기법입니다. AOP는 관점, 조인 포인트, 어드바이스, 포인트컷, 어드바이저 등의 개념을 활용하여 프록시 패턴을 기반으로 동작합니다. 스프링 AOP를 사용하면 핵심 비즈니스 로직에 집중하면서도 공통 기능을 쉽게 추가할 수 있습니다.

 

 

 

 

https://lasbe.tistory.com/119

 

[Spring/스프링] AOP @Aspect 사용법

[Spring/스프링] 관점 지향 프로그래밍(AOP)과 용어정리, Advice 종류 ⚡️관점 지향 프로그래밍(Aspect Oriented Programming, AOP) 스프링의 핵심기능인 IoC가 객체들의 결합도를 느슨하게 만들어 의존 관계를

lasbe.tistory.com

 

 

728x90