[스프링] 스프링 EL 고급 기능

목차

SpEL (Spring Expression Language) 익스텐션

스프링 EL (SpEL)은 스프링 프레임워크의 핵심 부분으로, 빈 설정이나 애노테이션 기반 환경에서 값 및 조건을 평가하는 데 사용됩니다. SpEL을 사용하면 런타임 중에 동적으로 프로퍼티 값을 설정하거나 프로퍼티 파일을 로딩할 수 있습니다. SpEL은 또한 메시지 소스에서 메시지를 가져오고 평가할 때도 사용됩니다.

SpEL의 고급 기능으로는 프로퍼티 소스 및 프로퍼티 파일 로딩, 메시지 소스 확장 등이 있습니다.

프로퍼티 소스 및 프로퍼티 파일 로딩

SpEL을 사용하여 프로퍼티 파일을 로딩하고 해당 프로퍼티 값을 동적으로 설정할 수 있습니다. 이를 통해 다양한 환경에서 동일한 코드를 실행하면서 필요에 따라 다른 프로퍼티 값을 적용할 수 있습니다.

예를 들어, 아래의 SpEL을 사용하여 app.properties 파일을 로딩하고 app.mode 프로퍼티 값을 동적으로 설정할 수 있습니다.

@Value("#{systemProperties['app.mode'] ?: 'default'}")
private String appMode;

위 코드에서 systemProperties['app.mode']는 시스템 프로퍼티에서 app.mode 값을 가져오고, 값이 없을 경우 ‘default’ 값을 사용하는 예제입니다.

메시지 소스 확장

SpEL을 사용하여 메시지 소스를 확장하면 동적으로 다국어 메시지를 관리할 수 있습니다. 이를 통해 사용자 인터페이스의 언어를 런타임 중에 변경하거나 조건에 따라 다른 메시지를 보여줄 수 있습니다.

예를 들어, 아래의 SpEL을 사용하여 메시지 소스를 확장할 수 있습니다.

@Value("#{messageSource.getMessage('welcome.message', null, T(java.util.Locale).getDefault())}")
private String welcomeMessage;

위 코드에서 messageSource.getMessage('welcome.message', null, T(java.util.Locale).getDefault())는 기본 로케일을 사용하여 welcome.message에 해당하는 다국어 메시지를 가져오는 예제입니다.

결론

SpEL은 스프링 프레임워크에서 값을 평가하고 조건을 적용하는 데 유용한 기능을 제공합니다. 고급 기능을 활용하면 다양한 환경에서 동적으로 프로퍼티 값을 설정하거나 다국어 메시지를 다룰 수 있어 효율적인 프로그래밍이 가능합니다.

더 많은 정보를 원하실 경우 스프링 공식 문서를 참조하시기 바랍니다.

SpEL 공식 문서