본문 바로가기
Programming/Spring

스프링 프레임워크 기초: SpEL (스프링 표현 언어)

by vita12321 2023. 8. 1.
728x90
반응형

스프링 프레임워크에서 사용되는 SpEL(스프링 표현 언어)는 신속하고 효율적인 표현식 처리를 도와주는 강력한 기능입니다. 본 글에서는 스프링 프레임워크에서의 SpEL 기본 개념 및 사용법에 대해 더욱 자세하게 알아보겠습니다.


 

1. SpEL 이란?

 

스프링 프레임워크에서 사용되는 SpEL(스프링 표현 언어) 표현식 처리 엔진으로, 복잡한 표현을 쉽고 간편하게 처리할 있는 강력한 도구입니다.

스프링 프레임워크 내에서 객체 그래프 탐색 메서드 호출, 변수 연산 다양한 작업들을 지원합니다.

SpEL 읽기 쉬운 구문과 함께 할당, 호출 연산같은 기능을 제공함으로써 개발자들에게 유연한 해결책을 제공합니다.


 

2. SpEL 기본 문법

 

SpEL 문법이 EL(Expression Language) 유사하게 작성되며, 참조 속성 호출, 논리 수치 연산, 메소드 호출 다양한 기능을 제공합니다. 문법의 예시는 다음과 같습니다.

 

  • 빈 참조: #{'beanName'}

  • 속성 호출: .property
     
  • 메소드 호출: .methodName()

  • 수치 연산: +, -, *, /, %, ^, mod

  • 비교 연산: ==, <, >, <=, >=, lt, gt, le, ge, eq

  • Boolean 연산: and, or, not, &&, ||, !

  • Null-safe 연산: ?.

  • 조건 연산: ? :, T(java.lang.Math).random() > 0.5 ? 'Yes' : 'No'

  • 정규 표현식 매치: matches

  • 타입 비교 및 캐스팅: instanceof, .(Type)

  • 배열, 리스트, 맵 접근: [index]

  • 프로젝션 및 선택: .?[expression], .![expression]


3. 스프링 프레임워크에서 SpEL 사용하기

 

스프링 프레임워크에서 SpEL 주로 어노테이션, XML JavaConfig 설정에서 사용되며 빈의 속성 등을 동적으로 설정해야 경우 유용합니다.


 

3.1. XML 설정 파일에서 SpEL 사용하기

 

XML 설정에서, 빈의 속성에 SpEL 표현을 사용하려면 value 어트리뷰트에 해당 표현을 입력하면 됩니다.

 

<bean id="user" class="com.example.User">

    <property name="age" value="#{18 + 2}"/>

    <property name="email" value="#{'test@test.com'}"/>

</bean>

3.2. Java Config에서 SpEL 사용하기

 

JavaConfig 사용할 경우, @Value 어노테이션을 사용하여 SpEL 표현식을 변수에 할당 있습니다.

 

@Configuration

public class AppConfig {

    @Value("#{1 + 2}")

    int data;

 

    @Bean

    public User userWithEmail() {

        User user = new User();

        user.setEmail("#{systemProperties['user.name']}@test.com");

        return user;

    }

}

 

3.3. 애플리케이션 코드에서 SpEL 사용하기

 

애플리케이션 코드에서 SpEL 사용하려면, SpelExpressionParser Expression 인터페이스를 사용하여 표현식을 처리할 있습니다.

 

@Autowired

private ApplicationContext applicationContext;

 

public void accessBeanPropertyUsingSpEL() {

    ExpressionParser parser = new SpelExpressionParser();

    Expression exp = parser.parseExpression("get(0).name");

    String name = exp.getValue(applicationContext.getBean("userList"), String.class);

    System.out.println("User name: " + name);

}

 

 

 

스프링 프레임워크에서 제공하는 SpEL 사용하면 코드의 가독성과 유지 보수성을 도모하고, 런타임 변수 조작 객체 그래프 탐색에 유용하게 사용할 있습니다. SpEL활용하여 전체적으로 효율적인 애플리케이션 개발이 가능해집니다

728x90
반응형