본문 바로가기

프로그래밍/kotlin21

[kotlin] 코틀린 차곡차곡 - 17. require와 check 안녕하세요. 오늘은 오랫만에 코틀린 차곡차곡 시리즈로 찾아왔습니다. 오늘 여러분들께 공유 드릴 내용은 코틀린에서 validation에 대해서 이미 정해져 있는 코드들에 대한 내용입니다. 기존의 validation asis 메서드를 원하는 바로 정확하게 실행시키기 위해서는 실제 본연의 메서드 로직을 실행시키기전에 validation으로 input으로 들어오는 파라미터의 값이나 사용하는 상태 적절한지에 대한 판단이 필요합니다. 이러한 validation은 보통 아래의 2가지로 나눌 수 있습니다. 파라미터 값 자체에 대한 validation 파라미터 값에 의한 기존 Entity를 비롯한 도메인이 가지고 있는 상태에 대한 validation 이러한 valitaion을 구현한다고 하면 기존에는 아래의 코드처럼 일.. 2022. 6. 5.
[kotlin] 코틀린 차곡차곡 - 16. kotlin JVM annotation 알아보기 2편 안녕하세요. 오늘은 이전 시간에 이어서 JVM annotation에 대해서 알아보는 시간을 가져보도록 하겠습니다. 오늘 알아볼 코틀린의 JVM annotation은 이전시간에 알아보지못한 @JvmOverloads, @JvmDefault, @Throws, @JvmWildcards 등입니다. @JvmOverloads 코틀린과 자바는 100% 호환 된다고 합니다. 하지만 몇몇 부분에 있어서는 상호 호환이 되지 않는 부분이 있습니다. 그 중 대표적인 하나가 코틀린의 default 값에 대해서 자바에서 호출하지 못한다는 것입니다. 아래 예제 코드를 한번 보면서 좀 더 들여다 보도록 하겠습니다. 코틀린의 함수를 아래처럼 선언하면 이는 아래의 3가지 방법으로 모두 접근이 가능합니다. 코틀린에서 default 파라미터.. 2022. 1. 26.
[kotlin] 코틀린 차곡차곡 - 15. kotlin JVM annotation 알아보기 안녕하세요. 오늘은 kotlin JVM annotation에 대해서 알아보는 시간을 가져보도록 하겠습니다. JVM annotation 코틀린은 컴파일 시 자바 바이트코드(.class)로 변환 되어지게 되며 다른 자바 파일들과 상호호환 되게 되고 JVM에 의해서 실행되게 되는 과정을 거칩니다. 이러한 과정 중 코틀린 파일에서 자바 바이트코드로 변경될 때좀 더 정밀한 제어를 할 수 있도록 하는 kotlin annotation이 있습니다. 이러한 어노테이션을 JVM annotation이라고 합니다. 이러한 JVM annotation의 종류는 아래와 같으며 오늘은 하나씩 차근차근 알아보는 시간을 가져보도록 하겠습니다. @JvmName @JvmStatic @JvmField @JvmDefault @JvmOverlo.. 2022. 1. 22.
[kotlin] kotlin 1.4.0 RELEASE 정리 안녕하세요. 오늘은 kotlin 1.4.0 버전 RELEASE에 업데이트 된 내용을 한번 살펴보도록하겠습니다. kotlin 1.4.0 코틀린 1.4.0은 성능과 품질에 집중했다고 합니다. 어떤 점이 변경되었는지 아래에서 바로 알아보겠습니다. kotlin/JVM 기준으로 알아두면 좋을것 같은 것들만 발췌하였습니다. 코틀린 Interface SAM(Single Abstract Method) Java8부터 Interface에 1개의 메서드만 가지게 되면 이를 함수형 인터페이스(Functional Interface)라고 부르며 람다(lambda)식으로 사용할 수 있게됩니다. 이를 SAM(Single Abstract Method)라고도 부릅니다. 대표적으로 Function이라는 인터페이스가 있습니다. @Funct.. 2021. 11. 11.
[kotlin] 1.3 버전 RELEASE 정리 안녕하세요. 최근 회사의 업무를 하던 중 필요에 의해서 kotlin 버전이 올라가면서 추가된 것을 확인해 볼 필요가 있었습니다. 정리한 내용을 이대로 버리기에는 아깝다고 생각했습니다. 오늘은 kotlin 1.3의 RELEASE에 대해서 번역한 내용을 공유드립니다. Kotlin 1.3.x kotlin 1.3.x 버전은 최초에 2018년에 출시된 코틀린 버전입니다. pre 버전을 제외한 최초 RELEASE은 1.3.0 버전으며 2018년 10월에 나왔으며 최종버전은 1.3.72로 2020년 4월에 출시되었습니다. 최초버전만 보자면 오래된 버전이긴합니다. 그러면서 최종 버전이 2020년 4월이기 현재.. 1.6.x 버전을 preview 하고 있기때문에 나름 장기간 유지된 메이저 버전이란 것도 알 수 있습니다... 2021. 11. 7.
[kotlin] 코틀린 차곡차곡 - 14. 중위 표기법 함수 (infix notation function) 안녕하세요. 오늘은 코틀린에 대해서 알아보는 14번째 시간입니다. 오늘은 여러분과 infix function에 대해서 알아보는 시간을 가져보도록 하겠습니다. infix function 이란 infix function은 어떤걸까요? 먼저 infix function에 대해서 알아보기 전에 infix 라는 단어가 어색하실 수 있을것 같습니다. 그렇다면 preifx, postifx는 좀 익숙하실까요? prefix는 앞에 어떤 행위가 온다는 것이고 postfix는 뒤에 어떤 행위가 온다는 것입니다. 간단한 예를 들어보면 표기법(expression)을 들 수 있을것 같습니다. 표기법은 연산자를 어디에 두냐에 따라 전위(prefix), 후위(postfix), 그리고 중위(infix)로 나뉘게 됩니다. 즉, infix.. 2021. 10. 23.
[kotlin] 코틀린 차곡차곡 - 13. data class 안녕하세요. 오늘은 코틀린의 13번째 시간입니다. 오늘 여러분들과 공유할 내용은 코틀린의 data 클래스입니다. kotlin data class에서 만들어지는 것들 Java로 코딩을 하다보면 DTO나 VO를 만들 때 get/set 메서드, toString 과 같은 코드를 만드는 일이 반복적으로 일어나게 됩니다. 이러한 반복적인 코드를 보일러플레이트 코드라고 하는데요. 자바에서 이러한 코드르 없애려고 노력하듯이 코틀린 또한 노력하고 있습니다. 자바에서는 lombok 이나 16버전 이상부터 사용학능한 record를 사용하면 됩니다만 코틀린에서는 data class 라는 타입으로 이를 해결할 수 있습니다. 예제로 한번 알아보도록 하겠습니다. 아래는 일반적인 java 코드입니다. get/set/toString/.. 2021. 10. 5.
[kotlin] 코틀린 차곡차곡 - 12. 리플렉션(reflection) 안녕하세요. 오늘은 코틀린에서의 리플렉션(reflection)에 대해서 알아보도록 하겠습니다. 리플렉션(reflection) 이란 리플렉션이란 런타임에 프로그램의 클래스를 조사하기 위해서 사용되는 기술입니다. 즉, 프로그램이 실행중일 때 인스턴스 등을 통해 객체의 내부 구조 등을 파악할 수 있습니다. Spring에서는 이 기술을 적극적으로 활용하고 있습니다. 대표적으로 어노테이션의 활용을 들 수 있습니다. 멤버 변수에 어노테이션을 붙인다면 어떻게 활용할 수 있을까요? 바로 이 리플렉션을 이용하는 것입니다. 리플렉션을 이용해서 멤버변수에 해당 어노테이션이 붙어있다면이라는 조건문을 통해 처리할 수 있는 것입니다. 우리가 자주사용하는 jackson library의 field를 추가하는 메서드 코드를 보도록 하.. 2021. 8. 29.
[kotlin] 코틀린 차곡차곡 - 11. Annotation ( 어노테이션 ) 안녕하세요. 오늘은 코틀린에서 Annotation을 사용하는 방법에 대해서 알아보도록 하겠습니다. 어노테이션( Annotation ) 어노테이션은 자바 또는 코틀린에서 사용됩니다. 어노테이션은 메타데이터 ( 부가기능 )을 코드에 비침투적으로 추가할 수 있는 수단으로 kotlin docs에서는 정의하고 있습니다. 어노테이션은 멤버 변수, 함수, 클래스 등 다양한 곳에 위치 시킬 수 있으며 또한 다양한 기능을 가진 다양한 어노테이션이 있습니다. 그리고 우리는 기 정의된 어노테이션 뿐만 아니라 스스로 정의한 커스텀 어노테이션을 만들어 사용할 수도 있습니다. 기본적인 선언 및 사용방법 코틀린에서 어노테이션은 아래와 같이 선언하면 사용할 수 있습니다. 아래 코드는 Karol이라는 어노테이션을 제작한 것이며 @Ka.. 2021. 8. 28.
[kotlin + Spring] 코틀린, Spring Boot 환경에서 JPA 사용하기, plugin과 함께 안녕하세요. 오늘은 코틀린 그리고 Spring Boot 환경에서 JPA를 사용하는 방법에 대해서 알아보도록 하겠습니다. 환경 JDK 버전 : 1.8.0.292 kotlin 버전 : 1.4.32 spring boot 버전 : 2.4.5 gradle 버전 : 6.8.3 intellij 버전 : 2021.1.1 프로젝트 시작하기 처음에 프로젝트를 시작하는 방법과 기본적인 gradle kotlin dsl의 설정에 대해서는 이전 포스팅에서 자세히 다루었습니다. 참고해주시기 바랍니다. [kotlin + Spring] 코틀린 환경에서 Spring Boot 사용하기 gradle kotlin dsl 설정 먼저 gradle kotlin dsl 설정을 하는 법부터 알아보도록 하겠습니다. gradle kotlin dsl 설정.. 2021. 7. 30.
[kotlin + Spring] 코틀린 환경에서 Spring Boot 사용하기 우리가 자바를 사용하는 이유는 스프링 프레임워크가 있기 때문이다라는 말이 있을 정도로 자바 언어를 사용하는 유저에게 스프링은 정말 없어서는 안될 존재이기도 합니다. 최근 코틀린이 자바유저들의 관심을 받기 시작한것도 물론 언어적으로 좀 더 실용적이라는 관점도 있지만 스프링을 사용할 수 있기때문에 진입장벽이 낮게 여겨지는 이유도 있을것이라고 봅니다. 그런이유로, 오늘은 코틀린 환경에서 스프링 프레임워크를 사용해보도록 하겠습니다. 환경 오늘 프로젝트는 아래의 환경을 기반으로 이루어집니다. 만약 동일하게 따라했으나 오류가 난다면 버전문제일 수 있으니 확인해주시기 바랍니다. JDK 버전 : 1.8.0.292 kotlin 버전 : 1.4.32 spring boot 버전 : 2.4.5 gradle 버전 : 6.8.3.. 2021. 7. 25.
[kotlin] 코틀린 차곡차곡 - 10. 인라인(inline) 함수와 reified 키워드 안녕하세요. 오늘은 코틀린에서 인라인 함수와 reified 키워드에 대해서 알아보는 시간을 가져보도록 하겠습니다. inline function 인라인(inline) 키워든는 자바에서는 제공하지 않는 코틀린만의 키워드입니다. 이러한 인라인 키워드를 이용하여 함수를 만들고 이를 잘 활용한다면 다양한 이득을 얻을 수 있는 경우가 있습니다. 하나씩 알아보도록 하겠습니다. 람다식을 사용했을 때 무의미한 객체 생성을 예방 인라인 함수를 사용한다면 람다식을 사용했을 때 무의미한 객체 생성을 막을 수 있습니다. 무슨 의미일까요? 이를 이해하기 위해서는 kotlin의 람다식이 컴파일될때 어떻게 변하는지를 확인해봐야합니다. 아래의 예제를 보도록 하겠습니다. 아래의 코드는 함수를 파라미터로 받고 특정한 일을한 후 해당 함수.. 2021. 7. 14.