Java와 Kotlin, Spring Boot에서 함께 쓰는 법

by DD
2년 전
조회수 8

Java의 Null safety 부재와 Kotlin의 JPA 호환성 문제를 해결하기 위해 두 언어를 혼용하기로 결정

멀티 모듈 구성, Platform Type 개선, Custom Nullability annotations 적용

ArchUnit을 활용하여 NonNull/Nullable 어노테이션 누락을 방지하고 코드 품질을 향상시킴

Java와 Kotlin 혼용의 기술적 배경

Java는 JPA와의 높은 호환성을 제공하지만, Null safety 부재가 단점이다. 따라서 Kotlin의 Null safety 지원과 Java의 JPA 연동을 위해 두 언어를 함께 사용한다. 구체적으로, Entity는 Java로, 나머지 로직은 Kotlin으로 구현하여 각 언어의 장점을 활용한다.

Platform Type과 Nullability annotations

Kotlin에서 Java로 선언된 변수를 사용할 때 Platform Type으로 인해 Null safety가 보장되지 않는다. 따라서 Nullability annotations을 사용하여 Null 가능 여부를 명시적으로 지정한다. 반면, 런타임에 어노테이션이 사라지는 문제를 해결하기 위해 RUNTIME retention policy를 가진 어노테이션을 직접 정의한다.

ArchUnit을 활용한 코드 품질 관리

ArchUnit을 사용하여 NonNullNullable 어노테이션 누락을 방지한다. 구체적으로, @Column이 있는 필드에 어노테이션이 있는지 검증하는 테스트 코드를 작성한다. 따라서, 코드 품질을 유지하고, NullPointerException 발생 가능성을 줄여 안정적인 서비스 운영을 가능하게 한다.

Spring Boot & JPA에서 Java와 Kotlin을 함께 사용하기