[스프링] 스프링 EL 파싱 및 평가

스프링 EL(Spring Expression Language)은 스프링 애플리케이션 컨텍스트에서 값 표현식을 사용하는 데 사용됩니다.

EL 문법

스프링 EL은 JSP나 JSF의 EL과 유사한 문법을 가지고 있습니다. ${...}의 형태로 값을 참조하거나 메소드를 호출할 수 있습니다.

String name = "John Doe";
String greeting = "Hello, ${name}";
// greeting 변수는 "Hello, John Doe"로 평가됩니다.

EL 문장 평가

스프링이 EL을 평가하려면 ExpressionParser를 사용합니다. ExpressionParserExpression 객체를 만들고 이를 평가하여 결과를 얻습니다.

StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("name", "John Doe");

ExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression("Hello, ${name}");

String result = expression.getValue(context, String.class);
// result 변수는 "Hello, John Doe"로 평가됩니다.

EL 심볼 표현식

스프링 EL은 평가 컨텍스트에 값을 제공하기 위해 심볼 표현식을 사용합니다. 이것은 VariableResolver 인터페이스를 구현하여 EL 식에서 사용할 변수를 제공합니다.

public class CustomVariableResolver implements VariableResolver {
    @Override
    public Object resolveVariable(String variable) {
        if ("name".equals(variable)) {
            return "John Doe";
        } else {
            return null;
        }
    }
}

이제 CustomVariableResolver를 컨텍스트에 등록하여 EL 식에서 해당 변수를 사용할 수 있습니다.

결론

스프링 EL을 사용하여 애플리케이션에서 값을 참조하거나 메소드를 호출할 수 있습니다. EL 식을 ExpressionParser를 사용하여 평가하여 결과를 얻을 수 있습니다. 또한, 커스텀 VariableResolver를 사용하여 EL 평가 컨텍스트에 추가적인 값들을 제공할 수도 있습니다.

참고: 스프링 EL 문서