Spring Framework 핵심 기술 - SpEL, Null-safety

h.Im·2024년 8월 27일

Springboot 기초

목록 보기
5/17
post-thumbnail

SpEL(Spring Expression Language)

SpEL은 짧고 간단한 문법을 통해 필요한 데이터나 설정 값을 얻어올 수 있게 하는 특별한 형태의 표현식에 가까운 간편한 언어입니다. 바로 예시 코드를 살펴 보겠습니다.

ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Hello World'");
String message = (String) exp.getValue(); // "Hellow World"

Expression expWow = parser.parseExpression("'Hello World'.concat('!')");
String messageWow = (String) expWow.getValue(); // "Hello World!"

Expression expString = parser.parseExpression("new String('hello world').toUpperCase()");
String messageString = expString.getValue(String.class); // "HELLO WORLD"

코드를 보면 "" 내부의 문자가 코드로써 동작한 모습을 확인할 수 있습니다. 그럼 실무에서는 어떤 식으로 활용될까요?

@Component
public class SimpleComponent {
	@Value("${ server.hostname }")
    String hostName;
    
    @Value("#{ ${ server.hostname } eq 'www.server.com'}")
    boolean isHostName;
}

Bean의 프로퍼티를 설정할 때, 환경 변수 등을 참조하여 변수값을 다르게 세팅해 주어야 하는 등의 동작이 필요하면 위처럼 작성할 수 있습니다.

Null-safety

@NonNull Anotation에 대해 예시 코드로 살펴보겠습니다.

// 파라미터에 붙이는 경우
public void method(@NonNull String request) {
	if (request === null) return; // 이 줄을 작성할 필요 없어짐
}

// 프로퍼티에 붙이는 경우
@NonNull
public String request = 'REQUEST';
public void method() {
	...
    request = null; // 경고 발생
}

// 메서드에 붙이는 경우
@NonNull
public String method() {
	...
    return null; // 경고 발생
}

@NonNull과 반대로, 해당 데이터가 null일 수 있을 때 @Nullable 어노테이션을 사용합니다.
해당 어노테이션이 붙은 값을 사용하는 경우 null check를 항상 수행하도록 경고합니다.

0개의 댓글