본문 바로가기

Kotlin

(4)
Kotlin에 MapStruct 적용할 때 주의할 점 개요매퍼 라이브러리로 mapstruct를 사용하는 과정에서 생각과 달리 작동하던 부분이 있어서 애를 먹고 고민했던 부분이 있다.그 과정에서 알게된 것들(코틀린의 기본 문법 포함)에 대해 정리하는 글. 적용한 mapstruct 버전 : 1.5.5 final미리보기이 글의 핵심을 먼저 mapstruct의 도큐먼트 인용으로 언급하자면 다음과 같다.3.9. Using ConstructorsMapStruct supports using constructors for mapping target types. When doing a mapping MapStruct checks if there is a builder for the type being mapped. If there is no builder, then Map..
Kotlin의 @ModelAttribute와 Custom Validation 어노테이션 적용 문제 해결 사례 Spring Boot 프로젝트에서 @ModelAttribute를 통해 요청 데이터를 받으면서, Kotlin의 데이터 클래스를 활용해 커스텀 유효성 검사 어노테이션을 적용할 때 발생했던 문제와 이를 해결한 과정을 정리한다.문제 상황 다음과 같이 @ModelAttribute로 선언한 데이터 클래스 PayRequest가 있다. userId 필드에는 커스텀 유효성 검사 어노테이션이 적용되어 있다. PayRequest 클래스data class PayRequest( val amount: Double, // 결제 금액 @CheckUserId val userId: Long, // 사용자 ID) { init { require(amount > 0) { "금액이 유효하지 않습니다." } ..
유효성 검사 리팩토링 : Kotlin when 구문으로 중복 줄이기 문제 상황유효성 검사 리팩토링 예시를 위해 사용자가 이메일을 수정할 때, 여러 가지 조건을 체크해야 하는 상황을 가정하였다. 조건은 다음과 같다. 이메일이 기존 이메일과 같으면 안 되고, 공백으로 제출되면 안 되며, 이메일 형식이 잘못되었거나 이미 다른 사용자에 의해 사용 중일 경우에는 예외가 발생해야 한다. 기존 코드에서는 각 조건마다 BusinessException을 중복해서 던지고 있다. 각 조건마다 동일한 예외 처리 구문이 반복되는데, 이를 when 구문으로 개선할 수 있다. 이로 인해 코드의 중복을 줄이고, 유지보수성을 높일 수 있다. 리팩토링 전 코드private fun validateUpdateEmail(req: EmailUpdateDto) { val userDto = userDomai..
코틀린의 스코프 함수(scope functions) 코틀린 기초 문법을 공부할 때, 스코프 함수라는 것을 접하고 처음에는 잘 이해가 가지 않았다.이걸 어느 상황에서 써야 하는지, 왜 써야 하는지 잘 와닿지 않았기 때문이다.점점 코틀린으로 코딩을 하면서 스코프 함수를 사용해야 하는 상황이 어떤 것인지 알게 되었고, 이제는 꽤 자주 사용하게 되었다. 적절하게 사용하면 편리한 스코프 함수에 대해 정리해 보려고 한다. 스코프 함수 이름에서 보듯이, 스코프 함수는 코틀린에서 특정 객체의 스코프(범위) 내에서 작업을 수행하도록 도와주는 함수이다.이 함수들은 블록 내에서 객체에 대한 일련의 작업을 실행하게 한다. 또한 스코프 함수를 사용하면 코드를 훨씬 간결하고 가독성 있게 작성할 수 있다.대표적인 스코프 함수는 let, apply, also, run, with가 있..