본문 바로가기
Spring Boot/Core

SpEL

by Holy Moly 2022. 7. 30.

SpEL(Spring Expression Language)

  • 객체 그래프를 조회하고 조작하는 기능을 제공
  • Unified EL과 비슷하지만, 메소드 호출 지원 및 문자열 템플릿 기능도 제공
  • OGNL, MVEL, JBOssEL 등 자바에서 사용가능한 여러 EL들이 있지만, SpEL은 모든 스프링 프로젝트 전반 사용하는 EL
  • 스프링 3.0부터 지원

SpEL 구성

  • ExpresstionParser parser = new SpelExpressionParser()
  • StandardEvalutationContext context = new StandardEvaluationContext(bean)
  • Expression expression = parser.parseExpression("SpEL 표현식")
  • String value = expression.getvalue(context,String.class)

문법

  • #{"표현식"}
  • ${"프로퍼티"}
  • 표현식은 프로퍼티를 가질 수 있지만, 반대는 안됨
    • #{${my.data}+1}

실제 사용하는 곳

  • @Value
  • @ConditionalOnExpression
  • 스프링 시큐리티
    • 메소드 시큐리티, @PreAuthorize, @PostAuthorize, @PreFilter, @PostFilter
    • XML인터셉터 URL 설정
    • ...
  • 스프링 데이터
    • @Query
  • Thymeleaf
  • ...

 

표현식을 이용하여 프로퍼티 접근, 메소드 사용을 자유롭게 할 수 있으므로 #이 보인다면 표현식임을 인지하자.

'Spring Boot > Core' 카테고리의 다른 글

Null-safety  (0) 2022.08.01
스프링 AOP  (0) 2022.08.01
데이터 바인딩 추상화  (0) 2022.07.26
Validation 추상화  (0) 2022.07.25
Resource 추상화  (0) 2022.07.25

댓글