2022/02/06 Spring Expression Language(SpEL), Null Safety

SpEL(Spring Expression Language)

Expression Language(표현언어)는 짧고 간단한 문법을 통해 데이터나 설정 값을 얻어올 수 있게 하는 특별한 형태의 표현식에 가까운 간편한 언어

SpEL은 그 중에서도 스프링 모든 영역에서 사용 가능한 언어형식

  • 주로 @Value("$(config.value)")와 같은 방식으로 설정값을 주입 받는데 활용(주로 많이 쓰임)

SpEL의 값 평가(evaluation)

  • SpelParser는 ""안에 들어있는 문자열을 평가(evaluation)해서 결과값을 만들어낸다
  • 'Hello World'는 문자열 리터럴이 되며,concat이라는 메서드도 호출할 수있다.
  • Spring 객체를 new로 생성해서 사용도 가능

위의 예제는 실무적으로 잘사용하지 않고 아래 예제처럼 사용할떄 사용한다.

Bean의 Property를 설정할 때 사용하는 방식

* 기본적으로 #(<expression string>} 방식으로 property를 설정
* application.properties(또는 application.yml)의 값을 가져올 때 ${<property name>} 방식으로 가져옴

Null Safety

널 안정성을 높이는 방법

  • 아래와 같은 코드를 만들지 않는 방법(자바는 데이터를 받아 오거나 처리할때 null check를 매번 해줘야한다.. 혹시 값이 없을 경우가 있으니까)
  • 혹은 아래와 같은 널 체크를 하지 않아서 발생하는 NPE(Null Pointer Exception)을 방지하는 방법
  • 완벽한 방법은 아니지만 IDE(Intellij, Eclipse)에서 경고를 표시함으로써 1차적인 문제를 방지하고, 정확한 에러 위치를 확인할 수 있도록 도움

null check 코드는 보일러플레이트 매번 체크해가면서 코드를 추가해야하는데 Spring 에서는 Null Safety를 통해 보일러플레이트코드를 방지할 수있다.

@NonNull Annotation

  • 해당 값이나 함수 등이 Null이 아님을 나타내는 어노테이션
  • org.springframework.NonNull을 사용
  • 메서드 파라미터에 붙이는 경우 : null이라는 데이터가 들어오는 것을 사전에 방지함
  • 프로퍼티에 붙이는 경우: null을 저장하는 경우 경고
  • 메서드에 붙이는 경우 :null을 리턴하는 경우 경고, 응답값을 저장하거나 활용하는 쪽도 NonNull이라고 신뢰하고 사용

@Nullable Annotation

  • @NonNull과 반대로 해당 데이터가 null일 수 있음을 명시
  • 해당 애노테이션이 부은 값을 사용하는 경우 null check를 항상 수행하도록 경고

좋은 웹페이지 즐겨찾기