SpEL(Spring Expression Langauge)

haruceki·2025년 2월 6일

SpEL은 런타임에 객체 그래프를 쿼리하고 조작하는 것을 지원하는 강력한 표현 언어이다. 언어표현은 Unified EL과 비슷하지만 추가 기능, 특히 메서드 호출 및 기본 문자열 템플릿 기능을 제공한다.

(https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html 참고)

자주 사용되는 곳

@Value, @PreAuthorize, @PostAuthorize, @PreFilter, @PostFilter

사용법

괄효안의 내용을 spEL 표현식으로 인식한다.

  • #{} ex) #{expression}
  • 속성 : ${} ex) ${property.name}

주요 특징

  • 표현식 평가
  • 객체 접근 및 메서드 호출
  • 조건식과 논리 연산자에 사용
  • 컬렉션 및 배열 지원

활용 사례

  • Spring Security : @PreAuthorize, @PostAuthorize 등의 어노테이션에서 SpEL을 활용하여 권한이나 접근 제어를 동적으로 판단 가능
  • Spring Data JPA : 쿼리 메서드나 쿼리 어노테이션(@Query)에서 동적으로 값을 바인딩할 때 사용
  • Spring Integration 및 Batch : 메시지 라우팅, 조건부 분기 처리 등 다양한 곳에서 표현식을 이용해 유연한 처리가 가능

Spring Security에서의 SpEL 사용 예시

@PreAuthorize("hasAuthority('MASTER') or #username == authentication.name")
public void updateUserProfile(String username, UserProfile profile) {
    // 프로필 업데이트 로직
}
profile
희망도 절망도 없이 매일 코딩을 한다.

0개의 댓글