[스프링 입문] - 섹션7. AOP

jada·2023년 10월 10일
0

Spring 스터디

목록 보기
5/35

AOP

만약 모든 메소드의 호출시간을 측정하고 싶다면?
🤔모든 메서드의 시작과 끝에 시간을 호출해 각각 그 값이 차이를 계산...

🔒 problem

  • 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞이면 유지보수가 어렵다.

  • 시간을 측정하는 로직을 별도의 공통 로직으로 만들기 매우 어렵다.

  • 시간을 측정하는 로직을 변경할 때 모든 로직을 찾아가면서 변경해야 한다.

공통 관심 사항(cross-cutting concern): 여러 메서드에 공통으로 적용하고 싶은 기능. 예) 메서드의 시간을 측정하는 로직

핵심 관심 사항(core concern): 핵심 비즈니스 로직과 같이 서비스에서 중심이 되는 기능.

🔑 solution

AOP를 사용하면 된다!

AOP 적용

  • AOP: Aspect Oriented Programming
  • 공통 관심 사항 vs 핵심 관심 사항 분리


  • 시간을 측정하는 로직을 별도의 공통 로직으로 만들었다.

  • 핵심 관심 사항을 깔끔하게 유지할 수 있다.

  • 변경이 필요하면 이 로직만 변경하면 되고, 원하는 적용 대상을 선택할 수 있다. (@Around 안에 적용 대상 쓰면 됨)


스프링의 AOP 동작 방식

  • proxy 주입
    스프링 컨테이너에 Spring bean을 등록할 때, 의존관계가 있는 가짜 Spring bean인 프록시를 호출하도록 만들어놓는다. -> 프록시가 진짜 Spring bean을 호출하게 됨.

profile
꾸준히 발전하는 개발자가 되자 !

0개의 댓글