스프링 프레임워크에서 사용되는 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을 활용하여 전체적으로 효율적인 웹 애플리케이션 개발이 가능해집니다.
'Programming > Spring' 카테고리의 다른 글
스프링 프레임워크 기초: 스프링MVC_HTTP요청응답 (0) | 2023.08.03 |
---|---|
스프링 프레임워크 기초: 스프링MVC 구조 (0) | 2023.08.02 |
스프링 프레임워크 기초: Validation, Data Binding (0) | 2023.07.31 |
스프링 프레임워크 기초: AOP(관점지향 프로그래밍) (0) | 2023.07.30 |
스프링(Spring) 프레임워크 기초: Resource(외부 자원 가져오기) (0) | 2023.07.29 |