[스프링] 스프링 EL 커스텀 함수 및 연산자 추가
스프링 프레임워크의 표현 언어(EL)은 JSP와 연동하여 동적인 콘텐츠를 생성하거나 속성에 접근할 수 있는 강력한 기능을 제공합니다. 그러나 기본 제공 함수 및 연산자 외에도 사용자 정의 함수나 연산자를 추가하여 EL을 확장할 수 있습니다. 이번 글에서는 스프링 EL에 커스텀 함수 및 연산자를 추가하는 방법에 대해 알아보겠습니다.
커스텀 함수 추가
함수 정의
먼저, 사용할 커스텀 함수를 정의합니다. 아래는 간단한 예제입니다.
package com.example.el;
public class CustomFunctions {
public static String reverseString(String input) {
return new StringBuilder(input).reverse().toString();
}
}
위의 코드에서 reverseString
은 입력된 문자열을 뒤집은 결과를 반환하는 함수입니다.
스프링 설정
다음으로, 스프링 설정 파일(XML 또는 Java Config)에 커스텀 함수를 등록해야 합니다.
XML 설정 파일
<bean id="customFunctions" class="com.example.el.CustomFunctions" />
<bean id="customFunctionsResolver" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="customFunctions" />
</bean>
Java Config
@Configuration
public class CustomELConfig {
@Bean
public CustomFunctions customFunctions() {
return new CustomFunctions();
}
}
커스텀 연산자 추가
연산자 정의
연산자를 추가하려면 javax.el.FunctionMapper
나 javax.el.ELResolver
를 확장하여 연산자를 정의해야 합니다. 아래는 간단한 예제입니다.
package com.example.el;
import javax.el.ELContext;
import javax.el.ELException;
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
public class CustomOperator {
public static Object multiply(Object first, Object second, ELContext context) {
ExpressionFactory factory = context.getELResolver().getExpressionFactory();
ValueExpression expression = factory.createValueExpression(context, "${first * second}", Object.class);
return expression.getValue(context);
}
}
위의 코드에서 multiply
연산자는 두 개의 입력 값을 곱한 결과를 반환합니다.
스프링 설정
커스텀 연산자를 사용하려면, el.resolver
프로퍼티를 사용하여 커스텀 ELResolver
를 등록해야 합니다.
<bean id="customELResolver" class="com.example.el.CustomELResolver"/>
<bean class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles-defs.xml</value>
</list>
</property>
<property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory" />
<property name="elResolver" ref="customELResolver" />
</bean>
마무리
이제 사용자 정의 함수와 연산자가 스프링 EL에 추가되었습니다. 새로운 기능을 활용하여 보다 유연하고 강력한 EL 표현식을 구성할 수 있게 되었습니다. 커스텀 함수 및 연산자 추가 기능은 스프링 EL을 좀 더 확장하고 다양한 형태의 표현식을 사용할 수 있게 해줍니다.
이상으로 스프링 EL 커스텀 함수 및 연산자 추가에 대해 알아보았습니다.
더 많은 정보는 스프링 공식 문서를 참고하시기 바랍니다.