AOP

naeganugu·2022년 7월 8일
0

스프링 마스터🌱

목록 보기
5/19

1. AOP가 필요한 상황

AOP란 무엇인지 알아보기 전에 언제 필요한지를 생각해보자.
만약 프로젝트의 모든 메소드의 호출 시간을 측정하려면 어떻게 해야할까? 모든 메소드 앞뒤에다가 시간을 측정하는 로직을 찍기도 애매.. 메소드 1000개씩 되면 이제 큰일나는 것이다. 개발자들이 제일 눈뜨고 못 볼 일.

암튼 그럴 때 AOP를 쓴다. 우리가 관심사항을 두 가지로 나눠볼 수 있는데

1) 공통 관심 사항
2) 핵심 관심 사항

호출 시간을 측정하는 건 핵심 관심 사항이 아니다. 공통 관심 사항!
이 공통 관심 사항과 핵심 관장 사항을 분리하는 게 AOP다.

AOP(Aspect Oriented Programming): 공통 관심 사항과 핵심 관심 사항을 분리. Controller든 Service든 Repository든 원하는 곳에 공통 관심 사항(ex. 시간 측정) 적용이 가능함.

@Around("execution(* hello.hellospring..*(..))")

Hello.hellospring 하위에는 다 적용하라는 뜻

@Around("execution(* hello.hellospring.service..*(..))")

이런 식으로 Service에만 적용도 가능!

2. AOP 작동 방식

적용할 곳을 지정을 하면, 프록시라는 걸 만든다.

예를 들어 Service에 AOP를 적용을 한다고 치자. 그렇다면 우선 가짜 Service를 만들고 Controller가 이 가짜를 호출하는데, 이 가짜가 프록시다. joinPoint.proceed() 메소드 호출 시에만 진짜 Service를 호출한다.

+) AOP 강의 들은 후기...
뭔가 굉장히 좋고 유용하게 쓰일 거 같은데. 내가 플젝할 때 과연 이걸 쓸까 싶다.. 그냥 만들 때는 뚝딱뚝딱 휘뚜루마뚜루 만들기에 급할 거 같은🥲 그래도 플젝하면서 써봐야지! 이래서 백엔드 인턴이나 실무 경험을 해보고 싶다.. 제발 나 인턴 시켜줘 회사들~😘



[출처]

스프링-입문-스프링부트

profile
seungseung-zanggu

0개의 댓글