개발지식

[Spring] AOP(관점 지향 프로그래밍)이란?!

우루쾅 2024. 2. 3. 00:44
728x90
반응형
SMALL

AOP란!

Aspect Oriented Programming - 관점 지향 프로그래밍이다.

Aspect : 관점

Oriented Programming : 지향 프로그래밍

말 그대로 특정한 관점에 따라 프로그래밍을 한다는 뜻입니다!

 

여러 객체에 공통적으로 적용할 수 있는 기능을 따로 정의해서

다른 객체에 삽입하여 코드의 재사용성을 높여주는 프로그래밍 기법!

즉, 어떤 로직을 기준으로 핵심적인 관점(Core concern), 부가적인 관점(Cross-cutting Concern)으로 나누어서 보고

그 관점을 기준으로 각각 모듈화 하겠다는 의미입니다.

 

핵심적인 관점(Core concern) : 개발자가 적용하고자 하는 핵심 비즈니스 로직.

부가적인 관점(Cross-cutting Concern) : 핵심 로직을 수행하기 위해 필요한 DB연결(JDBC), 로깅, 파일 입출력 등...

 

여러 개의 클래스에서 반복해서 사용하는 코드가 있다면 해당 코드를 모듈화하여 공통 관심사로 분리합니다.

 

위 이미지에서 3개의 A, B, C 의 클래스가 있다고 가정해봅시다.

 

클래스 A 에서는 주황, 파랑, 빨간색 블록으로 구성이 되어있고 클래스 B에서는 빨강, 주황 블록으로, 클래스 C에서는 주황, 파랑 블록으로 구성되어있습니다. 해당 색은 클래스 A, B, C 에서 동일하게 사용되는 코드를 의미합니다.

 

예를 들어서 클래스 A에서 주황색 블록을 수정하게 되면 클래서 B, C 에서도 수정을 해야 합니다. 이렇게 되면 유지보수 차원에서 모든 코드를 수정해야 하니 불편한 점이 있습니다. 그래서 Aspect X 에서는 공통 관심사인 주황색 블록을 묶어서 모듈화를 시키고 코드의 재사용성과 유지 보수성을 강화하였습니다.

 

이렇듯, 관점 지향 프로그래밍에서는 소스코드에서 반복적으로 사용하는 코드를 하나로 묶어서 모듈화하여 재사용성과 유지 보수성을 높일 수 있는 강점을 가지고 있습니다.

 

 

 

 

 

결론

AOP는 프로그래밍에서 공통적으로 사용되는 기능을 분리하여 관리하는 기법입니다.

이를 통해 코드의 중복을 줄이고 유지보수성을 높일 수 있습니다!

 

 

 

출처

https://adjh54.tistory.com/133

https://hyunki99.tistory.com/69#%E-%A-%--%C-%A-%--%ED%--%--%EB%A-%-D%EC%-B%-C%--%ED%-C%A-%ED%--%B-%---%--Spring%--AOP%EC%--%--%EC%--%-C%--%EC%--%AC%EC%-A%A-%---

bing chat : GPT-4 기반 Copilot (bing.com)

728x90
반응형
LIST