파비의 매일매일 공부기록

Study #03 - Spring Framework [토비의 스프링 3.0] 본문

Study/Java

Study #03 - Spring Framework [토비의 스프링 3.0]

fabichoi 2021. 2. 10. 23:30

회사 업무에서 Spring Framework를 활용하고 있으나

대부분은 SQL Query 수정 업무가 많아 공부를 시작했었다.

 

그러나 차일 피일 미루다가 누군가가 AOP에 대해 질문했을 때

딱 뭐라고 답하기가 어려워서 난감한 상황이 펼쳐졌었다.

 

AOP는 내 기억속에 Aspect... 밖에 없었다. 그래서 책을 다시 한 번 읽어보니

OOP에서의 OP는 동일하게 Oriented Programming이었다.

그러니까 Aspect는 관점. OP는 지향 프로그래밍이니까

객체지향이 아닌 관점지향 프로그래밍이라는 뜻을 갖고 있는 것이다.

아마 이제는 동일한 질문을 받았을 때 당황하지 않고 대답 할수 있겠지.

 

그나저나 왜 AOP를 하는 것일까?

OOP의 설계 방법을 따라가다 한계점이 있어 사용하는 걸텐데..

 

그래서 책을 읽고 그 내용을 나름 내 주관을 넣어 정리하자면

결국 OOP의 설계 방법을 따르면 모듈 안에 핵심/부가 기능이 모두 포함되어 있게 되는데

그러다 보면 부가 기능의 변경이 필요할 경우 모듈 전체를 수정해야 하는 경우가 발생 할 수 있다.

그렇기에 핵심 모듈 / 부가 모듈을 구분해서 설계 및 구현하는 방법을 취하는게 AOP라고 한다.

 

다시 설명해보자면

어떤 데이터를 DB에서 받아서 값을 변경하고 파일로 저장하는 기능을 모듈로 구현한다고 했을 때

값을 변경하는 모듈 : 핵심 모듈

DB값을 가져오는 모듈 : 부가 모듈

파일로 저장하는 모듈 : 부가 모듈

이렇게 분리해서 설계 및 구현하는 방법이라고 볼 수 있을 것 같다.

 

핵심 모듈인 값을 변경하는 모듈의 내용은 로직의 변경 요청이 없으면 그대로 유지될 것이며

부가 모듈인 DB값을 가져오는 모듈의 경우 DB의 종류가 Mysql에서 Oracle, Mssql 등으로 변동의 여지가 있는 모듈이다.

파일을 저장하는 모듈도 파일의 이름이나 타입이 변경 될 수 있는 가능성이 있는 모듈이다.

 

타깃, 어드바이스, 조인 포인트, 포인트컷, 프록시, 어드바이저, 에스펙트 등의 용어들이 있지만

그걸 여기다 정리한다고 따로 도움이 되는것도 아니고.. 어짜피 기억도 못할거 같아서

차차 이해되는대로 차후에 서술해볼 예정이다.

 

반응형
Comments