AOP

꾸줄근한 개발자·2025년 1월 25일

spring-boot

목록 보기
2/2

AOP(Aspect Oriented Programming)란?

: AOP는 관점 지향 프로그래밍
자바와 같은 OOP (객제 지향 프로그래밍) 을 더욱 OOP답게 사용할 수있도록 도와주는 역할을 한다.

AOP는 횡단 관심사를 처리하기 위한 강력한 도구로, 비즈니스 로직과 부가 로직을 분리하여 유지보수성과 가독성을 높입니다. Spring AOP는 Java 애플리케이션에서 로깅, 트랜잭션 관리, 보안 등에 널리 사용됩니다.

AOP 구현 예제 (Spring AOP)

1) 의존성 추가 (Gradle)

implementation 'org.springframework.boot:spring-boot-starter-aop'

2) Aspect 클래스

package com.example.aspect;

import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LoggingAspect {

    // Pointcut: 특정 패키지와 메서드 패턴 지정
    @Pointcut("execution(* com.example.service.*.*(..))")
    public void serviceMethods() {}

    // Before Advice
    @Before("serviceMethods()")
    public void logBefore() {
        System.out.println("Before method execution");
    }

    // After Returning Advice
    @AfterReturning("serviceMethods()")
    public void logAfterReturning() {
        System.out.println("After method returned successfully");
    }

    // Around Advice
    @Around("serviceMethods()")
    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("Before method execution");
        Object result = joinPoint.proceed(); // 메서드 실행
        System.out.println("After method execution");
        return result;
    }
}

3) 서비스 클래스

package com.example.service;

import org.springframework.stereotype.Service;

@Service
public class ExampleService {

    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

4) 결과

  • sayHello() 메서드 호출 시:
    - Before Advice 실행
    - 메서드 로직 실행
    - After Advice 실행
profile
bummy💖 열정💖

0개의 댓글