스프링 부트 _ AOP

박준식·2022년 9월 18일
0

Spring Boot

목록 보기
13/13

AOP가 필요한 상황

  • 실행시간 측정은 핵심 관심 사항이 아니다. 그러나 핵심 로직에 섞여있어 유지보수를 어렵게 한다.
  • 시간 측정 로직은 공통의 관심 사항이지만 별도의 공통 로직으로 만들기 매우 어렵다. 그래서 하나씩 다 일일이 변경해야 한다.
  • 위의 경우같은 공통 관심 사항을 수행할 일이 있을때 AOP를 사용한다.

AOP 적용

  • AOP(Aspect Oriented Programming)은 공통 관심 사항과 행심 관심 사항을 분리시켜 원하는 곳에 공통 관심 사항을 적용시킬 수 있게 해준다.
  • @Aspect 어노테이션으로 해당 클래스를 Aop로 등록한다.
  • @Around("execution (* 적용시킬 패키지 경로..*(..))") 어노테이션으로 적용 범위를 지정한다.
  • AOP는 스프링 Bean에 등록시켜야 사용가능하므로 @Component 어노테이션을 붙인다.

AOP 동작 방식

  • 원래 스프링은 controller가 service를 의존하고 메소드를 호출하는 방식이였는데 AOP 적용을 지정하면 프록시라는 가짜 service를 생성한다. 그 후 이 가짜 스프링 빈을 먼저 실행시키고 joinPoint.proceed()가 호출되는(가짜 스프링 빈이 종료되는) 시점에 진짜 service를 실행시킨다.

0개의 댓글