프로그래밍 노트/SPRING
[Spring] SpEL(스프링 Expression Language)
깡냉쓰
2020. 3. 29. 23:17
728x90
반응형
스프링 EL 이란?
- 객체 그래프를 조회하고 조작하는 기능을 제공한다.
- Unified EL과 비슷하지만, 메소드 호출을 지원하며, 문자열 템플릿 기능도 제공한다.
- 스프링 3.0부터 지원
SpEL 구성
- ExpressionParser parser = new SpelExpressionParser()
- StandardEvaluationContext context = new StandardEvaluationContext(bean)
- Expression expression = parser.parseExpression("SpEL 표현식");
- String value = expression.getValue(context, String.class)
문법
- #{"표현식"}
- ${"프로퍼티"}
- 표현식은 프로퍼티를 가질 수 있지만, 반대는 안됨
- #{${my.data} +1 }
- 레퍼런스 https://docs.spring.io/spring/docs/4.3.10.RELEASE/spring-framework-reference/html/expressions.html
실제로 어디서 쓰나?
- @Value 어노테이션
- @ConditionalOnExpression 애노테이션
- 스프링 시큐리티
- 스프링 데이터
- Query 어노테이션
@Component
public class SpelAppRunner implements ApplicationRunner {
@Value("#{ 1+ 1}") // 표현식 사용
int value;
@Value("#{'hello' + 'world'}")
String greeting;
@Value("#{1 eq 1}")
boolean trueOrFalse;
@Value("${my.value}")
int myValue;
@Value("#{${my.value} eq 100}")
boolean isMyValue100;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("========= SpEL ========");
System.out.println(value);
System.out.println(greeting);
System.out.println(trueOrFalse);
System.out.println(myValue);
System.out.println(isMyValue100);
}
}
사실 @Value 어노테이션안에서만 사용해본 기억만 있다.
출처 : 백기선님의 스프링 프레임워크 핵심 기술 강좌
728x90
반응형