스프링 프레임워크는 많은 기능을 제공하며, 그 중 특히 스프링 EL(표현 언어)과 AOP(관점 지향 프로그래밍)를 이용하여 코드 재사용을 높일 수 있습니다. 이번 블로그에서는 스프링 EL과 AOP를 이용하여 코드 재사용을 어떻게 할 수 있는지에 대해 알아보겠습니다.
스프링 EL이란?
스프링 EL은 JSP(Java Server Pages)와 스프링 프레임워크에서 변수, 함수 및 엔터티 접근을 위한 표현 언어입니다. 스프링 EL을 사용하면 런타임 시에 동적으로 값을 계산하거나 메소드를 호출하여 값을 가져올 수 있습니다.
예를 들어, 주문 처리 페이지에서 주문한 상품의 수량 및 가격을 계산하거나 특정 상태에 따라 다른 메시지를 표시하는 등의 작업을 스프링 EL을 이용하여 쉽게 처리할 수 있습니다.
AOP란?
AOP는 관점 지향 프로그래밍을 의미하며, 핵심 기능과 부가 기능을 분리하여 핵심 기능에 영향을 주지 않고 부가 기능을 추가할 수 있는 프로그래밍 기법입니다. AOP를 사용하면 핵심 로직에서 상세한 코드를 분리하여 코드의 재활용성 및 유지보수성을 높일 수 있습니다.
예를 들어, 로깅, 트랜잭션 처리, 보안 등과 같은 부가 기능을 AOP로 분리하여 각 기능을 필요한 코드에 쉽게 적용할 수 있습니다.
스프링 EL과 AOP를 이용한 코드 재사용
스프링 EL 사용 예제
public class Order {
private String itemName;
private int quantity;
private double price;
// getters and setters
}
public class OrderService {
public double calculateTotalPrice(Order order) {
return order.getQuantity() * order.getPrice();
}
}
위 예제에서 OrderService
클래스의 calculateTotalPrice
메소드에서 주문한 상품의 수량과 가격을 곱하여 총 가격을 계산하려면, 스프링 EL을 사용하여 아래와 같이 간단하게 처리할 수 있습니다.
public class OrderService {
public double calculateTotalPrice(Order order) {
return #{order.quantity * order.price};
}
}
AOP 사용 예제
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.OrderService.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Before calling the method: " + joinPoint.getSignature().getName());
}
}
위 예제에서 LoggingAspect
클래스는 OrderService
클래스의 모든 메소드 호출 전에 로그를 출력하는 기능을 AOP로 구현한 것입니다. 이렇게 AOP를 사용하면 다양한 부가 기능을 핵심 로직과 분리하여 재사용할 수 있습니다.
결론
스프링 EL과 AOP는 스프링 프레임워크에서 코드 재사용성을 높일 수 있는 강력한 도구입니다. 스프링 EL을 사용하여 동적으로 값 계산이나 메소드 호출을 처리하고, AOP를 사용하여 부가 기능을 분리하여 핵심 로직과 분리함으로써 코드를 깔끔하게 유지할 수 있습니다.
이처럼 스프링 EL과 AOP를 적절히 활용하여 코드를 더 깔끔하고 유지보수가 쉬운 형태로 관리할 수 있습니다.
참고 문헌
- https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions
- https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop