티스토리 뷰

 

Java와 다른점이 보일때마다 쓰는 Kotlin - 1

 

application.yml에 지정해놓은 환경 변수 값 혹은 environment 값을 가져올 때

 

Spring-Java에서는 @Value를 쓴다.

 

예를 들어, Spring-Java에서 프로필 값을 가져올 때는 별도의 설정 없이 아래와 같이 값을 가져올 수 있다.

@Value("${spring.config.activate.on-profile}")
String profile;

그런데 코틀린에선 위와 같이 Value를 지정해선 동작하지 않는다.

 

코틀린에서는 조금 다르게 사용해야 한다.

@Value("\${spring.config.activate.on-profile}")
lateinit var profile: String

일단 자바랑 다르게 이스케이프 문자열이 붙었다.

 

그리고 lateinit이 붙었는데, 자바랑 다르게 코틀린은 null-safe한 구조기 때문에

 

객체에 값이 할당되지 않았을 때 자동으로 null을 넣지 않는다.

 

그래서 나는 나중에 초기화 하겠어라는 의미로 lateinit을 사용한다.

 

단, lateinit으로 지정한 변수는 반드시 추후에 초기화 해줘야한다.

 

그렇지 않다면 NPE가 발생할 것 같지만 코틀린에선 다른 오류를 내려주니 참고

kotlin.UninitializedPropertyAccessException: lateinit property [변수명] has not been initialized

익셉션을 읽어보면, lateinit 변수가 초기화되지 않았다는 의미이다.

 

lateinit를 사용하기 싫다면 그냥 null을 초기화해주면 된다.

@Value("\${spring.config.activate.on-profile}")
var profile: String? = null

다만 코틀린에서는 ?의 무분별한 사용을 그렇게 권장하진 않는다.

 

이렇게 쓸거면 걍 자바써 이런 느낌

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함