cso6005 / TIL-Troubleshooting

배움 기록 및 트러블 슈팅 정리
0 stars 0 forks source link

[Back] AOP(Aspect Oriented Programming) #64

Open cso6005 opened 1 year ago

cso6005 commented 1 year ago

AOP(Aspect Oriented Programming)

우리는 사용자가 원하는 업무, 요구사항을 중점으로 두고 ObjectOriented Programming 개발을 한다.

그러나, 개발을 하다 보면, 개발자가 사용자의 요구 사항을 구현, 또는 테스트 하기 위해서 필요한 코드가 생기게 된다.

주 업무는 아닌데, 이를 필요에 따라 또는 운영에 따라 주요 로직 사이에 끼워 넣게 되는데, 이것은 사용자는 모르는 내용이다. 즉, 요구 사항이 아니라, 개발자가 끼워둔 코드가 되는 것이다.

이렇게 사용자가 바라보는 관점이 아닌 개발자, 운영자가 보는 관점에서 필요한 코드가 있을 것이고, 이렇게 사용자 관점, 개발자 관점에 따라서 프로그램을 나눠서 만들게 되는 것이다.

이때, 사용자가 요구하는 사항 즉, 사용자 관점에서 보는 것을 코어 업무로 두고,

개발자, 운영자의 관점에서 보는 부분을 분리 또는 결합시켜서 프로그램을 만드는 것에 대한 방법론이 AOP 이다.

Primary(Core) Concern 과 Cross-cutting Concern

Primary(Core) Concern

구현 방법

  1. 주 업무만 분리해 만든다.
  2. 프락시를 사용한다.

이때, 우리는 주 소스 코드가 없이 이 부가 코드를 어떻게 꽂을 수 있을까?

프락시를 쓴다면, 마치 있는 것처럼 실행 절차를 만들 수 있다.

프락시는 실제 주 업무를 호출해주는 역할을 하는데,

우리는 프락시를 호출하는 것이고. 프락시에서 호출하는 점의 앞 뒤로 원하는 부가 로직을 붙이거나, 떼면 되는 것이다.

필요하다면 앞에 부가로직을 실행하고 → 프락시를 호출해 → 얘가 주 로직 부르게 하고 → 필요하다면 뒤에 부가로직을 실행하게 하는 흐름이다.

cso6005 commented 1 year ago

Untitled (5)

Untitled (3)

cso6005 commented 1 year ago

스프링 프레임워크 Part2 AOP 강좌 내용

https://www.youtube.com/watch?v=pr2dwdf_03k&list=PLq8wAnVUcTFVUMCKI4CL_EHWW5ykPnL0z&index=3