728x90
스프링 프레임워크 핵심 기술
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/spring-core-tech/tree/chap05-01-spel
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/spring-framework_core/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
5-1. SpEL (스프링 Expression Language)
스프링 EL이란?
https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions
- 객체 그래프를 조회하고 조작하는 기능을 제공한다
- Unified EL과 비슷하지만, 메소드 호출을 지원하며, 문자열 템플릿 기능도 제공한다
- OGNL, MVEL, JBOss EL 등 자바에서 사용할 수 있는 여러 EL이 있지만, SpEL은
모든 스프링 프로젝트 전반에 걸쳐 사용할 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}
- 레퍼런스 참고
실제로 어디서 쓰나?
- @Value 애노테이션
- @ConditionalOnExpression 애노테이션
- 스프링 시큐리티
- 메소드 시큐리티, @PreAuthorize, @PostAuthorize, @PreFilter, @PostFilter
- XML 인터셉터 URL 설정
- ...
- 스프링 데이터
- @Query 애노테이션
- Thymeleaf
- ...
예제
@Component
public class AppRunner implements ApplicationRunner {
@Value("#{1 + 1}")
int value;
@Value("#{'hello ' + 'world'}")
String greeting;
@Value("#{1 eq 1}")
boolean trueOrFalse;
@Value("hello")
String hello;
@Value("${my.value}")
int myValue;
@Value("#{${my.value} eq 100}")
boolean isMyValue100;
@Value("#{'spring'}")
String spring;
@Value("#{sample.data}")
int sampleData;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("=====================");
System.out.println(value);
System.out.println(greeting);
System.out.println(trueOrFalse);
System.out.println(hello);
System.out.println(myValue);
System.out.println(isMyValue100);
System.out.println(spring);
System.out.println(sampleData);
ExpressionParser parser = new SpelExpressionParser();
// 이미 Expression이므로 {} 없이 그냥 작성하면
Expression expression = parser.parseExpression("2 + 100");
// 해당하는 타입으로 변환할 때 Conversion 서비스를 사용함
Integer value = expression.getValue(Integer.class);
System.out.println(value);
}
}
728x90
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 프레임워크 핵심 기술] 6-2. 스프링 AOP-프록시 기반 AOP (0) | 2019.10.06 |
---|---|
[스프링 프레임워크 핵심 기술] 6-1. 스프링 AOP-개념 소개 (0) | 2019.10.06 |
[스프링 프레임워크 핵심 기술] 4-2. 데이터 바인딩 추상화-Converter와 Formatter (0) | 2019.10.06 |
[스프링 프레임워크 핵심 기술] 4-1. 데이터 바인딩 추상화-PropertyEditor (0) | 2019.10.06 |
[스프링 프레임워크 핵심 기술] 3-2. Vaildation 추상화 (0) | 2019.10.06 |
댓글