Aspect-oriented Programming (AOP)
AOP(Aspect-Oriented Programming)는 교차 편집 문제를 분리하여 모듈성을 높이는 것을 목표로 하는 프로그래밍 패러다임입니다
교차 편집 문제는 로깅, 보안 및 트랜잭션 관리와 같은 다른 부분에 영향을 미치는 프로그램의 일부입니다
이러한 종류의 문제는 종종 코드를 분산시키거나 엉키게 하여 전통적인 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 달성하고자 하는 문제의 분리를 위반합니다.
AOP는 OOP에 추가 차원을 추가하여 이러한 문제를 해결합니다.
AOP에서 모듈성의 주요 단위는 aspect
Aspect는 여러 클래스에 영향을 미치는 동작을 재사용 가능한 모듈로 캡슐화합니다.
결과적으로 코드 모듈성과 가독성을 향상시키고 오류 가능성을 줄입니다
AOP의 주요 개념 및 요소
- 측면: 여러 클래스에 걸쳐 있는 문제를 캡슐화하는 모듈입니다.
- 조인 포인트: 메서드 실행이나 예외 처리 이벤트와 같은 프로그램 실행의 포인트.
- 어드바이스: aspect에 지정된 특정 조인 포인트에서 실행되는 코드.
- Pointcut: 어드바이스가 실행되어야 하는 조인 포인트 집합. 측면을 적용할 시기를 결정합니다.
- Weaving: 새 프록시 개체를 만들기 위해 대상 개체에 aspect를 적용하는 프로세스입니다.
Spring Framework의 AOP 모듈은 Aspect 지향 프로그래밍을 위한 풍부한 기능 세트를 제공합니다
교차편집 문제(Cross-cutting Concern)는 무엇인가
Cross-cutting이라는 용어는 애플리케이션 전체에 적용할 수 있는 로깅, 보안 및 트랜잭션 관리와 같은 일반적인 책임 분할을 가로지르는 기능을 나타냅니다.
Cross-cutting 문제는 아무리 모듈화를 잘해도 분리하기 어려운 상황
즉 프로그램의 여러 모듈이나 클래스에 분산되거나 엉킬 때 발생합니다.
이러한 코드의 흩어짐과 엉킴은 코드 중복성, 열악한 유지 보수성, 코드 관리 및 발전의 어려움과 같은 문제로 이어집니다.
예를 들어 로깅 기능을 변경해야 하는 경우 코드베이스의 여러 위치에서 수정해야 할 수 있습니다.
이는 오류가 발생하기 쉽고 시간이 오래 걸릴 수 있습니다
AOP는 측면이라는 별도의 기능 단위로 모듈화할 수 있도록 함으로써 Cross-cutting 문제를 해결합니다.
즉 선언적으로 또는 프로그래밍 방식으로 적용하여 코드의 모듈성, 가독성 및 유지 관리성을 향상시킬 수 있습니다.
이러한 Cross-cutting 문제를 구현하는 코드는 한 번 정의된 다음 필요에 따라 코드베이스 전체에 적용됩니다
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'DEV > Java' 카테고리의 다른 글
Spring Response와 Request (0) | 2023.05.13 |
---|---|
Spring의 HTTP 처리 (0) | 2023.05.13 |
Spring (0) | 2023.05.11 |
Java의 Hook Method (0) | 2023.05.10 |
Java의 보조 스트림 - 🐥 카카오 테크 캠퍼스 (0) | 2023.05.03 |