-
SPEL(스프링 Expresssion Language)SPRING/스프링프레임워크 핵심개념 2021. 5. 23. 22:44
스프링 EL
- 객체 그래프를 조회하고 조작하는 기능을 제공
- 스프링 3.0 부터 지원
- Unified EL과 비슷하지만, 메소드 호출을 지원하며 문자열 템플릿 기능도 제공
SpEL 구성
- ExpressionParser parser = new SpelExpressionParser()
- StandardEvaluationContext context = new Standard EvaluationContext (bean)
- Expression expression = parser.parseExpression(“SpEL 표현식”)
- String value = expression.getValue(context, String.class)
문법
- #("표헌식")
- ${"프로퍼티"}
- 표현식은 프로퍼티를 가질 수 있지만, 반대는 X
#{$(my.data} + 1}
실제 사용되는 곳
- @Value Annotation
- @ConditionalOnExpression Annotation
- Spring Security
- Spring Data
- Thymeleaf
@Component public class AppRunner implements ApplicationRunner { @Value("#{1+1}") int value; @Value("#{'hello ' + 'world'}") String greeting; @Value("#{1 eq 1}") String trueOrFalse; @Value("hello") String hello; @Value("${my.value}") String myValue; @Value("#{${my.value} eq 100}") String isMyValue100; // Bean에 있는 값을 참조 @Value("#{sample.data}") int sampleData; @Override public void run(ApplicationArguments args) throws Exception { System.out.println("=========================="); System.out.println(value); // 2 System.out.println(greeting); // hello world System.out.println(trueOrFalse); // true System.out.println(hello); // hello System.out.println(myValue); // 100 System.out.println(isMyValue100); // true System.out.println(sampleData); // 200 ExpressionParser parser = new SpelExpressionParser(); Expression expression = parser.parseExpression("2+100"); // Expression 자체가 표현식이기 때문에 {}안에 들어갈 내용을 넣는다. Integer value = expression.getValue(Integer.class); System.out.println(value); // 102 } } //application.properties my.value = 100 @Component public class Sample { private int data = 200; public int getData() { return data; } public void setData(int data) { this.data = data; } }
'SPRING > 스프링프레임워크 핵심개념' 카테고리의 다른 글
Spring AOP: 프록시 기반 AOP (0) 2021.05.29 스프링 AOP : 개념 (0) 2021.05.29 데이터 바인딩 추상화 : Converter와 Formatter (0) 2021.05.23 데이터 바인딩 추상화: PropertyEditor (0) 2021.05.19 Validation추상화 (0) 2021.05.19