inblog logo
|
silver
    스프링부트

    [스프링부트 blogV3] 5. AOP - 관점지향프로그래밍

    silver's avatar
    silver
    Feb 03, 2025
    [스프링부트 blogV3] 5. AOP - 관점지향프로그래밍
    Contents
    1. AOP2. AOP의 주요 특징3. 예시4. AOP 구현 방식5. AOP 사용의 이점
    1. 관점에 따라 다르게 행동할 수 있어야한다 - 핵심
    1. 부가로직을 공통모듈로 만들어야한다. → 부가로직이 동일한 코드여야한다. - 특징
    1. 행단관심사(행동 단위 관심사 : 특정 기능이나 관심사를 중심으로 시스템을 모듈화하고 구성하는 접근 방식)
    notion image

    1. AOP

    관점 지향 프로그래밍(Aspect-Oriented Programming, AOP)은 프로그램의 여러 부분에서 반복적으로 나타나는 공통 관심사를 따로 분리하여 관리하는 방법이다.
    • 관점에 따라 행위가 달라져야 함
    • 공통 관심사를 분리하여 재사용
    • SRP(단일 책임 원칙) 준수

    2. AOP의 주요 특징

    2.1 행단위 관심사 분리

    • 핵심 로직(Core Concern): 비즈니스 로직에 필수적인 부분
    • 부가 로직(Cross-cutting Concern): 여러 곳에서 공통적으로 사용되는 부분
      • 로깅, 보안, 트랜잭션 등

    2.2 동적 행위 결정

    • Reflection을 통한 런타임 동작 변경
    • 어노테이션이나 필드를 기반으로 다른 행위 수행
    • 프록시 패턴을 통한 부가 기능 구현

    3. 예시

    3.1 "옷을 입다" 예시

    공통 모듈 (부가 로직) - "옷을 입다" ↓ 상황별 구현 (핵심 로직) - 회사 미팅: 격식있게 입기 - 운동: 츄리닝 입기 - 소개팅: 젠틀하게 입기

    3.2 "이동하다" 예시

    공통 모듈 (부가 로직) - "이동하다" ↓ 구체적 구현 (핵심 로직) - 지하철 타기 - 걷기 - 버스 타기

    4. AOP 구현 방식

    4.1 프록시 패턴

    • 공통 관심사를 프록시 객체로 분리
    • 원본 객체의 메소드 호출 전/후에 부가 기능 수행

    4.2 Reflection 활용

    • 런타임에 클래스의 정보를 분석
    • 어노테이션이나 필드 정보를 기반으로 동작 변경

    5. AOP 사용의 이점

    1. 코드 중복 제거
    1. 비즈니스 로직의 명확한 분리
    1. 유지보수성 향상
    1. 재사용성 증가
     
     
    Share article
    Contents
    1. AOP2. AOP의 주요 특징3. 예시4. AOP 구현 방식5. AOP 사용의 이점

    silver

    RSS·Powered by Inblog