SpEL (Spring Expression Language)

__〆( ̄ー ̄ ) ·2025년 1월 31일

스프링 부트

목록 보기
5/9

SpEL (Spring Expression Language) 이란?

SpEL은 스프링에서 제공하는 표현 언어로 일반적으로 @Value 어노테이션과 함께 프로퍼티나 리소스를 접근하는데에 주로 사용돼요. 이 밖에도 생각보다 더 많은 기능을 제공해서 잘 활용하면 코드 복잡도를 크게 낮출 수 있어요.

SpEL의 주요 기능

  • 객체 그래프 접근
  • 값 할당
  • 메서드 호출
  • 조건문
  • 정규 표현식
  • 빈 참조
  • 리터럴 표현식

SpEL은 @Value, @ConditionalOnExpression, 스프링 시큐리티, 스프링 데이터에서 많이사용되고 #{표현식} 처럼 사용 돼요. 몇 가지 예시를 볼게요.

@Component
public class MyService {
    @Value("#{T(java.lang.Math).random() * 100}") // 정적 메서드 호출
    private double randomNumber;

    @Value("#{myBean.name}") // 빈 참조
    private String name;

    @Value("#{myBean.getAge() > 20 ? 'Adult' : 'Young'}") // 삼항 연산자
    private String ageGroup;

    @Value("#{myList[0]}") // 리스트 요소 접근
    private String firstItem;

    @Value("#{myMap['key']}") // 맵 요소 접근
    private String value;

    ...
}

SpEL 안에는 프로퍼티도 사용할 수 있어요. (프로퍼티 안에서는 표현식은 사용 불가)

    @Value("#{${my.data} + 1}") // 빈 참조
    private int data ;

SpEL은 강력하고 다양한 기능을 제공하지만 너무 복잡한 표현식을 사용하면 가독성과 성능을 저하시킬 수 있어요. 표현식이 최대한 간결하고 명확할 때 사용하는 것이 바람직해요.

profile
뭐라도 적자

0개의 댓글