Spring SpEL: Spring Expression Language 스프링 표현 언어

반응형

SpEL: Spring Expression Language

Expression Lanuage(표현 언어)는 값 또는 식을 조작하거나, 데이터나 설정 값을 가져올 수 있게 하는데 사용되는 표현식에 가까운 언어입니다.

 

SqEL은 Spring Framework에서 사용되는 EL의 한 종류로, 스프링 모든 영역에서 사용 가능한 언어 형식입니다. 주로 설정 파일에서 값 설정, 빈 생성 조건, 프로퍼티 접근 등을 위해 활용됩니다.

  • 프로퍼티 접근: 빈의 프로퍼티 값을 가져오거나 설정 가능
  • 메서드 호출: 빈의 메서드를 호출하고 결과 가져오기
  • 수학 및 논리 연산: 산술, 비교, 논리 연산 가능
  • 조건문 및 반복문: 조건문과 반복문을 지원
  • 컬렉션 처리: 리스트, 맵 등의 컬렉션을 처리할 수 있음 

 

코드 내에서 SqEL 사용 예시:

ExpressionParser parser = new SpelExpressionParser();

// SpEL 표현식 평가
Expression exp = parser.parseExpression("'Hello, ' + 'World!'");
String message = exp.getValue(String.class); // Hello, World!

Expression exp = parser.parseExpression("'Hello, World!'");
String message = (String) exp.getValue(); // Hello, World!

Expression exp = parser.parseExpression("'Hello, '.concat('World!')");
String message = exp.getValue(String.class); // Hello, World!

Expression exp = parser.parseExpression("new String('hello, world!').toUpperCase()");
String message = exp.getValue(String.class); // HELLO, WORLD!

 

Bean의 Property 설정 예시:

@Component
public class MyBean {
    @Value("#{T(java.lang.Math).random()}")
    private double randomNumber;
	
    // ...
}

 

application.properties에서 값 가져오는 예:

app.name=dutmdcjfApp
app.version=5.5.5
@Value("${app.name}")
private String appName;

@Value("${app.version}")
private String appVersion;
반응형