Spring 부가기능(4) - SpEL

공부한것 다 기록해·2023년 8월 5일
0

Expression Language(표현언어)는 짧고 간단한 문법을 통해 필요한 데이터나 설정 값을 얻어올 수 있게 하는 특별한 형태의 표현식에 가까운 간편한 언어(그래프 접근 가능)

SpEL은 스프링의 모든 영역에서 사용 가능한 표현언어

스프링에서 주로 많이 활용되는 부분

  • @Value("${config.value}")와 같은 방식으로 설정값을 주입 받는데 사용

SpEL의 값 평가(evaluation)

  • SpelParser는 ""안에 들어있는 문자열을 평가(evaluation)해서 결과값을 만들어낸다.
  • 'Hello World'는 문자열 리터럴이 되며, concat이라는 메서드도 호출할 수 있다.
  • String 객체를 new로 생성해서 사용도 가능
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("Hello world");
String message = (String) exp.getValue();

Expression expWow = parser.parseExpression("'Helllo World'.concat('!')");

String messageWow = (String) expWow.getValue(); // "Hello World!"

Expression expString = parser.parseException("new String('hello world').toUpperCase()");
String messageString = expString.getValue(String.class); // "HELLO WORLD"

Bean Property를 설정할 때 사용하는 방식

  • 기본적으로 #{expreesion string}방식으로 property를 설정
  • application.properties(또는 application.yml)의 값을 가져올 때는 ${property name} 방식으로 가져옴
@Component
public class SimpleComponent{
	@Value("#{1+1}")
    int two;
    
    @Value("#{2 eq 2}")
    boolean isTrue; // true
    
    @Value("${server.hostname}")
    String hostName; // www.server.com
    
    @Value("#{${server.hostname} eq 'www.server.com'}")
    boolean isHostSmae; // true
}

0개의 댓글