관점지향프로그래밍(AOP)

ClassBinu·2024년 5월 10일

F-lab

목록 보기
17/65

프로그램의 핵심 기능과 부가 기능(예: 로깅, 보안, 트랜잭션 처리 등)을 분리하여 프로그램의 구조를 개선하는 프로그래밍 패러다임

관점지향프로그래밍(Aspect-Oriented Programming, AOP)은 소프트웨어 개발에서 사용되는 프로그래밍 패러다임의 하나로, 애플리케이션의 핵심적인 기능과 이와 관련되지 않은 부가적인 기능을 분리하여 관리할 수 있도록 도와줍니다. 이를 통해 코드의 모듈성을 높이고, 유지보수를 쉽게 만듭니다.

AOP의 핵심 개념

AOP는 주로 "관심사의 분리"라는 개념에 초점을 맞춥니다. 여기서 '관심사'는 특정한 기능 또는 로직을 의미하며, 이들이 서로 섞이지 않고 독립적으로 유지되도록 합니다. AOP는 특히, 애플리케이션 전반에 걸쳐 여러 컴포넌트에 걸쳐 사용되는 반복적인 코드(예: 로깅, 보안, 트랜잭션 처리 등)를 중앙에서 관리하게 해줍니다.

AOP의 주요 용어

Aspect: 관점. 부가 기능과 관련된 코드를 모듈화한 것입니다. 예를 들어, 로깅이나 보안 검사와 같은 기능을 어스펙트로 정의할 수 있습니다.
Join Point: 연결점. 프로그램 실행 중 어떤 지점에서 부가 기능을 적용할 수 있는지를 정의한 위치입니다. 예를 들어, 메소드 호출이나 변수에 값이 할당될 때 등이 이에 해당합니다.
Advice: 어드바이스. 특정 Join Point에 삽입되어 실행되는 코드 조각입니다. 어드바이스는 Join Point에서 실행되어야 할 실제 작업(로직)을 정의합니다.
Pointcut: 포인트컷. 어떤 Join Points를 사용할지, 즉 Advice가 적용될 위치를 선별하는 표현식입니다. 포인트컷을 통해 특정 메소드나 클래스의 Join Points를 선택할 수 있습니다.
Target: 타겟. Aspect가 적용되는 대상 객체 또는 클래스입니다.
Weaving: 위빙. Aspect 코드를 타겟 객체의 코드에 삽입하는 과정을 의미합니다. 이 과정은 컴파일 시간, 로드 시간 또는 실행 시간에 수행될 수 있습니다.

AOP의 장점

유지보수성: 반복되는 코드를 한 곳에 모아두기 때문에 코드 변경이 필요할 때 수정할 장소가 줄어듭니다.
재사용성: 공통의 관심사를 재사용할 수 있어 코드의 재사용성이 향상됩니다.
분리성: 핵심 로직에서 부가적인 기능을 분리함으로써 각각의 코드가 더욱 명확하고 단순해집니다.

0개의 댓글