Spring Expression Language(SpEL)

개요

Spring 3.0에서 처음 소개된 스프링 전용 표현식 언어로 강력하고 유연하게 사용된다.
SpEL은 빈 오브젝트에 직접 접근할 수 있는 표현식을 이용해서 프로퍼티 값을 능동적으로 가져오는 방법이며 가장 기본적이다. 또한 jsp에서 <spring:eval>태그를 사용하여 SpEL을 적용 할 수도 있다.

설명

빈 설정파일을 사용하여 SpEL적용

빈 프로퍼티에 값을 설정하면, 다른 빈이나 프로퍼티에 접근 가능하다.

  • 다음의 빈에서 접근하는 예제이다.
<bean id="springTest" ..>
	<property name="test" value="Sample" />
</bean>
 
<bean id="testNames">
	<property name="name" value="#{springTest.test}" />
</bean>
  • 다음은 <util:properties> 를 사용하여 프로퍼티에 접근하는 예제 이다.

globals.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:1623/EASYCOMPANY
username=tex
password=texAdmin

context-datasource.xml

<util:properties id="dbprops" location="classpath:/egovframework/property/globals.properties" />
 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	<property name="driverClassName" value="#{dbprops['driverClassName']}"/>
	<property name="url" value="#{dbprops['url']}"/>
	<property name="username" value="#{dbprops['username']}"/>
	<property name="password" value="#{dbprops['password']}"/>
</bean>
  • 다음은 <util:properties> 를 사용하여 변수로 직접 주입하는 예제 이다.
@Value("#{dbprops.driverClassName}")
private String driverClassName;

또는

@Value("#{dbprops}")
private Dbproperies dbprops;

JSP에서 SpEL적용

JSP의 EL대신에 Spring 3.0의 SpEL을 사용해서 값을 출력할 수 있다. JSP에서 SpEL을 사용하려면 태그 라이브러리를 추가해야 한다.

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<spring:eval> 태그를 사용하여 JSP에서 SpEL을 사용한다. 모델 오브젝트를 직접 사용할 수 있다.

<spring:eval expression="sampleVO.money"/>

메소드의 리턴값이 스트링일 경우, 메소드 자체를 호출할 수 있다.

<spring:eval expression="sampleVO.toString()"/>

또한, @NumberFormat, @DateTimeFormat과 같은 컨버전 서비스에 등록되는 포맷터를 자동으로 적용할 수 있다. 다음은 sampleVO의 일부이다.

/** 잔액 */
@NumberFormat(pattern = "###,##0")
private Integer money;
<spring:eval expression="sampleVO.money"/>

위와 같이 적용하면 입력 값에 따라 3자리마다 쉼표(,)가 출력된다.

입력값: 1234000 , 출력값: 1,234,000

모델에 직접 어노테이션으로 설정하지 않아도 new를 이용해 SpEL을 적용할 수 있다.

<spring:eval expression='new java.text.DecimalFormat("###,##0").format(price)'/>

참고자료

 
egovframework/rte4.2/ptl/spel.txt · 마지막 수정: 2024/01/08 08:40 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki