최대 1 분 소요

AOP 개요

filter interceptor aop

AOP 란 관점 지향 프로그래밍입니다. 처음에 관점 지향이라고 하면 쉽게 머리속에 그려지지 않습니다. 개발을 하면서 layer 아래와 같이 Three layer로 구성하여 구현할 때 layer별로 아래와 같은 기능을 처리해야 하는 경우

  • logging
  • security
  • 에러 공통처리 등
    Filter나, Intereptor, AOP를 고려합니다. AOP는 가장 상세하게 처리를 제어할 수 있습니다.

다시 본론으로 돌와서 관점지향이란 수많은 트랜잭션이 흘러가고 있을 떄 특정 지점에서 무엇인가 제어하고 싶을 떄 처리하는 지점을 모듈로 구현하기 쉽게 지원하는게 AOP입니다.

aop

AOP 사용하기 위해서 필요한 것

  • Spring Boot AOP Dependency 추가
  • 클래스(빈)를 하나 생성하고 @Aspect 어노테이션 추가
  • AOP 모듈 구현

Spring Boot AOP Dependency 추가

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

AOP 관련 클래스를 만들기위해 클래스(빈)를 하나 생성하고 @Aspect 어노테이션 붙이기

@Component
@Aspect
public class AspectConfig {

}

특정 지점을 제어하고자 하는 기능을 작성

아래 코드에서 제어하고자 하는 특정 지점은

  • 모든 constroller의 operation이 실행될 때
  • operation 실행되기 전/후에 로그를 출력하는 모듈 AOP기능으로 가장 많이 사용하는 로그 출력하는 AOP 예제입니다.
    @Slf4j
    @Component
    @Aspect
    public class AspectConfig {
      @Around("execution(* com.demo.microservices.controller.*Controller.*(..))")
      public Object logPrint(ProceedingJoinPoint joinPoint) throws Throwable {
          log.info("-------------------------------------")
          log.info("Before Execute Method!");
          Object proceed = joinPoint.proceed();
          log.info("After Execute Method!!!!");
          log.info("-------------------------------------")
    
          return proceed;
      }
    }
    

태그:

카테고리:

업데이트:

댓글남기기