4 스프링 표현식 언어 (SpEL)

4. 스프링 표현식 언어 (SpEL)

스프링 표현 언어(줄여서 SpEL)는 런타임에 객체 그래프를 질의하고 조작하는 것을 지원하는 강력한 표현 언어 입니다. 언어 구문은 통일된 EL(Unified EL)과 유사하지만 추가적인 기능, 특히 메서드 호출 및 기본 문자열 템플릿 기능을 제공합니다.

OGNL, MVEL 및 JBoss EL과 같은 여러가지의 자바 표현 언어가 존재 하지만, 스프링 표현 언어는 스프링 포트폴리오의 모든 제품에 걸쳐서 사용할 수 있는 하나의 표현 언어를 스프링 커뮤니티에 제공하기 위해 만들어졌습니다. 스프링 표현 언어의 기능은 이클립스에 기반한 Spring Tool Suite에서 코드 자동 완성 같은 도구의 요구 사항을 포함해서 스프링 포트폴리오 제품들의 필요 사항에 따라 만들어졌습니다. 즉, SpEL은 필요에 따라 다른 표현 언어 구현체를 통합할 수 있도록 기술에 구애 받지 않는 API를 기반으로 합니다.

SpEL은 스프링 포트폴리오 내에서 표현식 평가의 토대가 되며, 스프링과 직접적인 관련이 없으며 독립적으로 사용할 수 있습니다. 자체적으로 설명하기 위해 이 장의 많은 예제는 독립적인 표현 언어인것처럼 SpEL을 사용합니다. 이를 위해서는 Parser와 같은 몇 가지의 부트스트랩 인프라 클래스를 만들어야 합니다. 대부분의 스프링 사용자는 이 인프라를 다룰 필요가 없으며 평가를 위해 표현식 문자열만 작성할 수 있습니다. 이러한 일반적인 사용의 예는 XML 또는 Annotation 기반 빈 정의에 SpEL을 통합하는 것입니다. (Expression support for defining bean definitions 참고)

이 장에서는 표현식 언어, API 및 언어 구문의 기능에 대해 설명합니다. 여러 곳에서 InventorSociety클래스는 표현식 평가를 위한 대상 객체로 사용됩니다. 이러한 클래스 선언들과 그것들을 채우는 데 사용되는 데이터는 이 장의 마지막 부분에 나열되어 있습니다.

표현식 언어는 다음 기능을 지원합니다:

  • 리터럴 표현식

  • Boolean과 관계형 오퍼레이터

  • 정규 표현식

  • 클래스 표현식

  • 속성, 배열, 리스트, 맵에 대한 접근

  • 메서드 호출

  • 관계형 오퍼레이터

  • 할당

  • 생성자 호출

  • 빈 참조

  • 배열 생성

  • 인라인 리스트

  • 인라인 맵

  • 삼항 연산자

  • 변수

  • 사용자 정의 함수

  • 컬렉션 투영

  • 컬렉션 선택

  • 템플릿 화된 표현식

  • SpEL : 실행 중인 객체 그래프에 질의를 하여 원하는 값을 얻거나 객체 그래프 자체의 값을 변경하는 데 사용되는 매우 강력한 표현 언어. 언어의 문법은 범용 EL과 유사하지만 문자열을 다루는 부분과 메서드를 실행시키는 부분에 특화된 추가적인 기능들을 제공한다.

Cf. 그래프: 어느 특정 시점을 기준으로 한, 클래스 인스턴스 간의 관계를 알 수 있도록 하는 객체 시스템의 어떤 단면 또는 성질.

즉, 실행 시에 객체로부터 원하는 값을 얻어내거나(getter) 객체의 값을 조작하는 데(setter) 사용되는 어떤 도구.

Last updated