본문 바로가기

내일배움캠프

TIL

요즘 잘안되네..

뭔가 전환점이 필요한건가.. 음.

 

일단 오늘은 AOP 정리

 

AOP란?

AOP(Aspect-Oriented Programming)는 프로그래밍에서 관심사를 모듈화하는 기법 중 하나입니다. 이를 사용하여 각 관심사를 별도의 모듈로 분리하고, 각 모듈을 필요한 곳에 적용할 수 있습니다. 이를 통해 코드의 재사용성과 유지 보수성을 향상시킬 수 있습니다.

Java에서 Spring Framework를 사용하여 AOP를 구현하는 방법을 살펴보겠습니다.

먼저, Spring AOP를 사용하려면 다음 단계를 따르면 됩니다:

  1. 의존성 추가: 프로젝트에 Spring AOP의 의존성을 추가합니다.
  2. Aspect 클래스 작성: 관점(Aspect) 클래스를 작성하여 어떤 부가적인 동작을 수행할 것인지 정의합니다.
  3. Pointcut 정의: 어떤 메소드가 해당 관점에 의해 보강되어야 하는지 정의하는 포인트컷을 작성합니다.
  4. Advice 정의: 포인트컷에 적용될 부가 동작을 정의합니다.

예를 들어, 메소드 호출 시간을 측정하는 관점을 작성해 보겠습니다.

의존성 추가

 

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

 

 

Aspect 클래스 작성:

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class MethodExecutionAspect {
    
    @Pointcut("execution(* your.package.*.*(..))")
    public void anyMethod() {}

    @Before("anyMethod()")
    public void beforeMethodExecution() {
        System.out.println("Before method execution");
    }

    @After("anyMethod()")
    public void afterMethodExecution() {
        System.out.println("After method execution");
    }
}

 

위의 예제에서 your.package를 패키지명으로 변경해야 합니다. 또한, beforeMethodExecution() 및 afterMethodExecution() 메소드 안에 실제로 수행할 부가 동작을 추가할 수 있습니다.

이제 이 관점을 적용하려는 대상 메소드가 있는 서비스나 컨트롤러 클래스에서는 Spring의 컨텍스트에 빈으로 등록된 이 Aspect 클래스를 활용할 수 있습니다. 이렇게 하면 해당 클래스의 메소드 호출 시간을 측정하는 부가 기능이 활성화됩니다.

'내일배움캠프' 카테고리의 다른 글

TIL  (0) 2024.06.18
TIL  (0) 2024.06.14
TIL 34일차?  (0) 2024.06.07
TIL34일차  (0) 2024.06.04
TIL31일차.  (0) 2024.06.03