Spring AOP

심민혁·2025년 3월 30일

weeklypaper

목록 보기
8/18

>2025.03.24일자 위클리 페이퍼

Spring에서 AOP(Aspect Oriented Programming)가 필요한 이유와 이를 활용한 실제 애플리케이션 개발 사례에 대해 설명하세요.

Spring AOP

1. AOP란

AOP는 Aspect Oriented Progrmming의 약자로 관점 지향 프로그래밍이라고 불린다.
여기서 관점이란 기능을 구현할 때 핵심 기능, 부가 기능으로 구분해 각각 하나의 관점으로 보는것을 의미한다라고 적혀있다. 사실 이 문장을 읽었을때 이해가 확실하게 되지 않았다.
내가 이해하기로는 코딩을 하다 보면 핵심 기능은 아닌데 반복적으로 코드를 삽입해야 되는 상황이 있을것이다. 부가적으로 반복되는 코드들을 삽입하면 코드가 중복되고, 중복이 된다는것은 유지보수가 어려워 지기 때문에 공통으로 사용되는 로직들을 별도의 모듈로 관리하여 유지보수와 코드 중복을 줄이고자 등장한 개념이라고 이해했다.

2. AOP가 필요한 이유

  • 중복 코드 제거: 여러 클래스에 걸쳐 반복되는 로깅, 트랜잭션, 보안 등 공통 로직을 한 곳에 모아 중복을 방지합니다.

  • 핵심 로직과 공통 로직 분리: 비즈니스 로직을 더 명확하게 유지하여 유지보수를 쉽게 합니다.

  • 유지보수성 향상: 공통 기능이 수정되더라도 한 곳에서 관리되므로 수정이 쉽고 일관성을 유지합니다.

  • 모듈화 및 재사용성 증대: 공통된 로직을 별도 모듈로 만들어 재사용성을 높입니다.

  • 확장성 및 유연성 제공: 새로운 기능이나 공통 요구사항이 생겨도 기존 로직에 영향을 주지 않고 쉽게 추가하거나 변경할 수 있습니다.

3. AOP 활용 사례

  • 로깅 :
    서비스에서 제공하는 주요 기능이 제대로 작동하는지, 어떤 메서드가 언제 호출되었는지 등의 기록을 남겨야 할 때, AOP를 사용하면 개발자가 일일이 로깅 코드를 작성하지 않아도 됩니다.

    AOP를 활용하면 모든 메서드 실행 시점에 자동으로 로깅이 가능하므로, 코드 중복 없이 쉽게 애플리케이션의 전체적인 작동 흐름을 파악할 수 있습니다.

  • 트랜잭션 :
    쇼핑몰에서 주문을 처리할 때, 주문 정보 저장과 결제 처리 등 여러 데이터베이스 작업이 발생합니다. 이때 중간에 문제가 생기면 데이터가 불일치하는 문제가 발생할 수 있습니다.

    AOP를 활용하면 각 메서드의 실행 과정에서 자동으로 트랜잭션이 처리됩니다. 문제가 생기면 자동으로 이전 상태로 복구(롤백)하고, 문제가 없으면 데이터를 저장(커밋)해줍니디.

  • 권한 및 보안 :
    은행, 게시판 등에서 중요한 정보에 접근할 때 사용자가 인증된 상태인지 체크하는 기능이 반복적으로 필요합니다.

    AOP를 활용하면 이런 인증 체크를 각 메서드마다 반복하지 않고 자동으로 수행할 수 있도록 설정할 수 있습니다.

  • 성능 분석 :
    어떤 서비스가 느려지는지, 처리에 시간이 얼마나 걸리는지 등의 성능을 분석해야 할 때, 메서드마다 시간을 체크하는 코드가 들어가면 코드가 지저분해집니다.

    AOP를 활용하면 전체 서비스나 특정 기능 실행 시, 자동으로 성능(실행시간)을 측정할 수 있습니다.

  • 예외 처리 :
    많은 메서드에서 다양한 예외가 발생할 수 있는데, 각각 예외 처리를 하면 코드가 길어지고 복잡해집니다.

    AOP를 활용하면 메서드에서 발생한 예외를 한 곳에서 공통으로 처리할 수 있습니다. 예외 발생 시 자동으로 로그를 남기거나 공통된 방식으로 사용자에게 알림을 보낼 수도 있습니다.

profile
열심히 하고 싶습니다

0개의 댓글