AOP(Aspect Oriented Programming) 란?
AOP 개요
AOP 란 관점 지향 프로그래밍입니다. 처음에 관점 지향이라고 하면 쉽게 머리속에 그려지지 않습니다. 개발을 하면서 layer 아래와 같이 Three layer로 구성하여 구현할 때 layer별로 아래와 같은 기능을 처리해야 하는 경우
- logging
- security
- 에러 공통처리 등
Filter나, Intereptor, 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; } }
댓글남기기