메모장

AOP ( 관점 지향 프로그래밍 ) 개념 본문

Spring/개념정리

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

Itchild 2024. 7. 4. 11:37
728x90
반응형

 

 

Spring 프레임 워크 란?

IoC 와 AOP를 지원하는 경량의 프레임워크 이다.

 

우리는 지금까지 IoC에 대해서 배워 보았고 .

간략하게 다시 짚어보자면 IoC 개념은 new를 개발자 대신 해준다.

결합도를 낮추는 코드를 작성해 볼 수 있다.

유지보수 용이한 코드가 되려면 낮은 결합도높은 응집도를 갖춰야 한다.

 

 

IoC에 대한 설명이 더 보고 싶다면 아래 링크를 참고 하도록 하자


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

 

우리가 지금까지 JAVA에서 배웠던 내용은

OOP (Object Oriented Programming) - 객체 지향 프로그래밍에 대해서만 배웠는데

Spring 과정으로 넘어오면서 이제는 관점 지향 프로그래밍에 대해 알아볼 예정이다.

 

AOP(Aspect Oriented Programming) 란 '관점 지향 프로그래밍'으로서

개발 로직과 비즈니스 로직을 분리하여 관리하는 Spring 개념이다.

즉, 공통 관심 사항과 핵심 관심 사항(코어 코드)을 분리하여 반복된 작업을 줄이는 Spring 개념입니다.

쉽게 설명하자면, 100개 함수가 처리해야 할 공통 기능 코드(예: 로깅) 들을 분리해 별도 Bean으로 관리하는 컨셉입니다.


기존의 Controller 메서드를 예시로 들 예정이다 .

LoginController 의 login.do부분을 살펴보자

생략이 되어있지만 순서로 나눈다면

① (개발자용) 로그 : 확인을 위해 로그를 남긴다.

② 권한 확인 : 보안, 인증 , 허가 되었는지, ...

③ 비즈니스 메서드 (CRUD,핵심로직, 핵심관심)

④ 트랜잭션, 보안관제 로그 , ...관제 로그를 찍을 수 있다.(관제실에서 조정한다해서 관제 로그 라고한다. )

관제 로그 (요즘 디지털 포렌식이라는 단어로 익숙하다.)

관제로그는 네트워크 기록, DB 기록,ip 주소가 남는다 던지,, 등등 보안 기록을 찾아서 유추한다.

 

 

여기서 사용자의 요청이 달라진다고 하면 ?

① , ② , ④번은 계속 사용되고 정말 변경되는 부분은 ③번만 달라졌다.

 

 

①, ②, ④번 같이 반복되는 로직을 공통 로직, 횡단 관심이라고 한다.

(횡단보도 할때 그 횡단 == 가로지른 다는 뜻 )

반복되는 로직들은 어디든 가로 지르기 때문에 횡단 로직이라고 한다. (횡단 관심)

③ 같이 바뀌는 부분을 핵심 관심, 핵심 로직, 비즈니스 메서드 , CRUD

 

 

뭔가 반복,복사가 되면 모듈화 하고 싶어한다. 객체지향에서는 이런 개념이 없었는데

Spring 에서는 컨테이너 개념이 나오면서

"관심 분리(Separation of Concerns)" 해보는건 어떨까 ? 라는 생각에서 탄생하게되었다.

관심 == 로직 ( "로직 분리" 라고 함 ) 로직분리를 하면 ★ 응집도가 높아진다 ★

( == 로그는 로그 따로 쓰고 메서드는 메서드 따로 쓰기 때문에 )

 

 

 

 

728x90
반응형

'Spring > 개념정리' 카테고리의 다른 글

AOP (.xml 방식)  (0) 2024.07.04
AOP 용어 정리  (0) 2024.07.04
@RequestParam  (0) 2024.06.21
Model 객체  (0) 2024.06.21
비즈니스 레이어 (서비스 레이어) 적용  (0) 2024.06.21