개발자가 되고 싶은 개발자

[Spring] AOP 개념 본문

Dev/Java & Spring

[Spring] AOP 개념

Fullth 2020. 3. 3. 21:00

안녕하세요, 스프링의 주요 개념인 AOP에 대해서 알아보도록 하겠습니다.

 


" AOP란?? "

Aspect Oriented Progrmming. 관점 지향 프로그래밍.

 

관점? 관점이 의미하는 바는 무엇일까요??

 

우선, 사전의 뜻을 찾아보도록 하겠습니다.

 

횡단 관심사 (cross-cutting concern)의 분리를 허용함으로써, 모듈성을 증가시키는 것이 목적인
프로그래밍 패러다임이다.

https://ko.wikipedia.org/wiki/%EA%B4%80%EC%A0%90_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

관점 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 컴퓨팅에서 관점 지향 프로그래밍(aspect-oriented programming, AOP)은 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 코드 그 자체를 수정하지 않는 대신 기존의 코드에 추가 동작(어드바이스)을 추가함으로써 수행하며, "함수의 이름이 'set'으로 시작하면 모든 함수 호출을 기록한다"와 같이 어느 코드가 포인트컷(p

ko.wikipedia.org

 


횡단관심사란??

횡단 관심사...? 또 새로운 표현이 나왔습니다.

AOP의 개념을 찾아볼 때, 주로 보실 수 있는 예시 그림을 하나 보시겠습니다.

Cross-Cutting Concerns

위키 백과에 따르면 횡단 관심사는 다른 관심사에 영향을 미치는 프로그램의 관점이다. 라고 나와있습니다. 

글만 본다면 점점 복잡해져만 느껴지지만, 그림을 보시면 이해가 가실겁니다.

 

은행 업무의 어플리케이션을 작성한다고 가정합시다. 

계좌이체, 입출금, 잔액조회 등은 핵심 관심사

로깅, 보안, 트랜잭션은 그 기능들을 가로지르는! 교차하는! 횡단 관심사 라고 할 수 있습니다.

 

그림과 같이, 다수의 모듈에서 반복적으로 나타나는 부분을 횡단 관심이라고 합니다.

 

기술들을 조사하다 보면, 직역되어 있는 경우가 많은데 초보자인 입장으로서 AOP의 경우는 좀 충격을 먹었습니다.

횡단 관심사라니... 그냥 차라리 영어를 공부하게 해주는 좋은 자료들이 많은 것 같습니다.

(cross-cutting, Aspect로 그냥 받아드리는 것이 마음 편한것같습니다.)

 

어쨋든, 관점이 의미하는 바는 핵심 기능, 핵심 로직을 의미한다. 라고 정리할 수 있겠습니다.

 

기존에는 에를 들어 보안 코드를 수정할 일이 생기면, 비즈니스 코드에 접근해 수정하였지만

이렇게 크로스 커팅 관심사(로깅, 보안, 트랜잭션 등)를 분리하여, 코드 자체를 수정하지 않고 기존의 코드에

동작을 추가 하여 수행하도록 하는 것이 AOP의 핵심입니다. 

 

즉, 비즈니스 로직을 깨끗하게 사용하기 위해 부가 기능들을 모듈화 한 것이죠.

 

어떻게 사용하는지는 따로 작성해보도록 하겠습니다.

 

잘못된 부분은 알려주시면 수정하도록 하겠습니다. 감사합니다.

'Dev > Java & Spring' 카테고리의 다른 글

[Spring] AOP 용어 및 예제  (0) 2020.03.18
[SpringBoot] DB 연결  (0) 2020.03.06
[Spring] Maven Ojdbc6 에러  (0) 2020.02.21
[Java] Buffer를 이용한 입출력  (0) 2020.02.18
[JSP]  HttpSession 인터페이스  (0) 2020.02.13