-
SpEL(스프링 Expression Language)백기선(인프런 강의)/스프링 프레임워크 핵심 기술 2020. 3. 26. 08:42반응형
스프링 EL 이란?
- 객체 그래프를 조회하고 조작하는 기능을 제공한다.
- Unified EL과 비슷하지만, 메소드 호출을 지원하며, 문자열 템플릿 기능도 제공한다.
- OGNL, MVEL, JBOss EL 등 자바에서 사용할 수 있는 여러 EL이 있지만, SpEL은 모든 스프링 프로젝트 전반에 걸쳐 사용할 EL로 만들었다.
- 스프링 3.0 부터 지원.
@RestController public class HomeController { @Value("#{1 + 1}") int value; @Value("#{'hello ' + 'world'}") String greeting; @Value("#{1 eq 1}") boolean trueOrFalse; @GetMapping(value = "/") public String home() throws IOException { System.out.println("=============================================="); System.out.println(value); System.out.println(greeting); System.out.println(trueOrFalse); System.out.println("=============================================="); return "test"; } }
Value에 #을 사용하는 이유는 #과 그 괄호( {} )안에 있는 값을 표현식으로 인식을 한 후 표현식을 실행 후 값을 넣어준다.
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}
- 문법 참고
SpEL이 지원하는 기능
- 리터럴 표현식 (Literal Expression)
- Boolean과 관계형 Operator (Boolean and Relational Operator)
- 정규 표현식 (Regular Expression)
- 클래스 표현식 (Class Expression)
- 프로퍼티, 배열, 리스트, 맵에 대한 접근 지원 (Accessing properties, arrays, lists, maps)
- 메서드 호출 (Method Invocation)
- 생성자 호출 (Calling Constructors)
- Bean 참조 (Bean References)
- 배열 생성 (Array Contruction)
실제로 어디서 쓰나?
- @Value 애노테이션
- @ConditionalOnExpression 애노테이션
- 스프링 시큐리티
- 메소드 시큐리티, @PreAuthorize, @PostAuthorize, @PreFilter, @PostFilter
- XML 인터셉터 URL 설정
- 스프링 데이터
- @Query 애노테이션
- @Query 애노테이션
- Thymeleaf
반응형'백기선(인프런 강의) > 스프링 프레임워크 핵심 기술' 카테고리의 다른 글
Spring AOP - @AOP (0) 2020.03.30 Spring AOP - 개념소개 (0) 2020.03.29 데이터 바인딩 추상화 - propertyEditor, Converter, Formmater (0) 2020.03.25 Validation 추상화 (0) 2020.03.23 Resource 추상화 (0) 2020.03.23