👣 개요
스프링 프레임워크에서 제공하는 표현 언어로서
XML 설정이나 어노테이션 기반의 스프링 빈 정의, 프로퍼티 파일 등에서
데이터를 참조하고 조작하는 데 사용된다.
👣 SpEL의 값 평가 - evaluation
SpelParser는 쌍따옴표 내부의 문자열을 평가해서 결과물을 출력한다.
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Hello World'");
String message = (String) exp.getValue(); // "Hello World"
Expression exp = parser.parseExpression("'Hello World'.concat('!')");
String message = (String) exp.getValue(); // "Hello World!"
Expression exp = parser.parseExpression("new String('Hello World').toUpperCase()");
String message = exp.getValue(String.class); // "HELLO WORLD"
👣 연산식을 통한 값 주입
#{ <expression string> } 방식으로 값 주입.
@Value("#{ 1+1 }")
Object obj; // 2
@Value("#{ 2 eq 2 }")
Object obj; // true
@Value("#{ ${server.hostname} eq 'www.server.com' }")
Object obj; // true
👣 SpEL 문법
- 리터럴 표현식
- 숫자, 문자열, 불리언, null 등의 값을 표현합니다.
- 예: 42, 'Hello, SPEL!', true, null
- 빈 참조
- 빈의 이름을 사용하여 빈을 참조합니다.
- 예: @myBean
- 프로퍼티 참조
- 빈의 프로퍼티 값을 참조합니다.
- 예: @myBean.name
- 리스트/배열 인덱스
- 리스트나 배열에서 요소를 인덱스로 접근합니다.
- 예: myList[0], myArray[3]
- 맵 키
- 맵에서 특정 키를 사용하여 값을 가져옵니다.
- 예: myMap['key']
- 메서드 호출
- 빈의 메서드를 호출하고 반환값을 사용합니다.
- 예: @myBean.calculateSum(10, 20)
- 연산자
- 산술 연산자(+, -, *, /), 관계 연산자(==, !=, >, < 등), 논리 연산자(and, or, not), 삼항 연산자 등을 지원합니다.
- 조건식
- 삼항 연산자를 사용하여 조건에 따라 다른 값 반환합니다.
- 예: condition ? trueValue : falseValue
- Elvis 연산자
- null 체크를 간단하게 수행합니다. 해당 표현식의 결과가 null이면 대체 값을 사용합니다.
- 예: nullableValue ?: defaultValue
- 특수 표현식
- T 키워드를 사용하여 자바의 정적 메서드나 클래스의 상수 값을 참조합니다.
- 예: T(java.lang.Math).PI, T(java.time.LocalDate).now()
- 집계 함수
- collection.{프로퍼티} 형태로 컬렉션의 프로퍼티 값을 모두 가져올 수 있습니다.
- 예: @myList.{name}, @myList.{name.toUpperCase()}
- 문자열 템플릿
- 문자열 템플릿을 사용하여 문자열을 생성합니다.
- 예: 'Hello, #{'John'}!'
'Spring Boot' 카테고리의 다른 글
@Transactional (0) | 2023.07.30 |
---|---|
Lombok (0) | 2023.07.29 |
Spring Boot AOP (0) | 2023.07.29 |
Spring Boot Bean 등록 방법 5가지 (0) | 2023.07.29 |
Spring Logging System (0) | 2023.07.29 |