본문 바로가기

Kotlin

Kotlin + SpringBoot + Kafka 연동 이번 포스트에서는 코틀린 기반의 스프링 부트 프로젝트 설정 및 카프카 연동의 과정을 정리 하려고 한다. 내가 생각하는 코틀린의 큰 강점 중 하나는, 자바로 개발을 해오던 방식을 거의 그대로 유지하면서 코틀린만의 유연한 문법적 혜택을 누릴 수 있다는 것이다. 그러한 맥락에서, 사실 코틀린으로 스프링 부트 프로젝트를 설정하는 것은 자바와 거의 다를 것이 없다. 일단 스프링 부트 프로젝트 부터 만들어 보자. 1. 스프링 부트 프로젝트 프로젝트 생성 'Spring Initializr' 를 사용해 프로젝트를 생성하게 되면, 각종 스프링 부트의 starter 의존성을 선택하는 창이 노출 되는데, 여기선 아무런 의존성도 선택하지 않고 그냥 프로젝트를 생성하자. (어짜피 직접 그래들 의존성 추가해주는 것과 똑같다) 그.. 더보기
[Kotlin] 함수 프로그래밍 분야에서 함수라는 말은 어떤 '입력'에 대해 '출력'을 반환하는 일련의 코드 조각을 나타내는데, 이것은 우리가 잘 알고 있는 수학적인 정의와도 유사하다. 메서드 또한 이러한 개념에서 함수이지만, 이것은 객체지향 문맥에서 주로 쓰이는 용어이다. 다시 말하자면, 수신객체에 보내는 '메시지'라고 하는 것이 올바르다. 이와 관련된 것은 'Message passing' 과 관련된 문서를 찾아보자. 이제 코틀린에서 말하는 함수 또는 메서드의 중요 개념들을 정리해 보도록 하겠다. (이하 코틀린 문맥에서 '함수'로 통일) 최상위(Top level) 함수 각자 이해하기에 따라 다를 수 있지만 서두에 언급한 것과 같은 맥락에서, 함수라는 것은 어떠한 수신객체도 없다. 자바 또한 이러한 개념을 이용해 메서드를 작.. 더보기
[Kotlin] Property와 Data Class 비즈니스 도메인을 자바로 개발하다 보면, 흔히 'Value Object' 라고도 불리는 - 물론 단순히 값을 저장하는 객체의 의미는 아니지만 - 자바 빈즈(Java Beans) 컴포넌트를 작성해야 할 때가 많다. 이 자바 빈즈에는 귀찮은 규약이 하나 있는데, 접근자(Getter)와 수정자(Setter)가 바로 그것이다. 물론, IDE의 자동완성 기능이라던가, 해당 메서드들 뿐만 아니라 품질 좋은 `equals`와 `hashcode`그리고 `toString` 메서드까지 생성해주는 'Lombok' 이라는 녀석 덕분에 많은 개발자들이 조금 이나마 타이핑을 덜 하게 되기는 했다. 다만 이러한 것들을 언어의 런타임 레벨에서 지원하지 않는다는 것은 자바의 한계를 보여준다. 프로퍼티 코틀린에서는 언어 자체에서 이를 .. 더보기
Intellij + Kotlin + Gradle 개발환경 구성 이 포스팅에서는 `IntelliJ` 기반으로 코틀린으로 개발하기 위한 기본적인 설정을 정리한다. 각 버전 정보는 아래와 같다. IntelliJ : 2020.1.1 (#IU-201.7223.91) Kotlin : 1.3.72 Gradle : 5.6.4 프로젝트 생성 'build.gradle' 파일 작성 buildscript { ext.kotlin_version = '1.3.72' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } group 'org.example' version '1.0-SNAPSHOT' repositories { mavenC.. 더보기