ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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)

    문법

    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 애노테이션
    • Thymeleaf

     

     

    반응형
Designed by Tistory.