
오늘은 코틀린+스프링 프레임워크(줄여서 코프링)이라고 하는 기법에 대한 글 중 카카오페이에서 도움이 될만한 글이 있어서 가져왔습니다. https://tech.kakaopay.com/post/overcome-spring-aop-with-kotlin/ Kotlin으로 Spring AOP 극복하기! | 카카오페이 기술 블로그 Kotlin의 문법적 기능을 사용해서 Spring AOP 아쉬운 점을 극복한 경험을 공유합니다. tech.kakaopay.com 원래 스프링 프레임워크는 코틀린 언어의 할아버지뻘 되는 언어인 자바에서 기본적으로 파생된 언어입니다. 코틀린은 제트브레인(JetBrain)이라고 하는 체코 회사에서 개발한 언어입니다.(안드로이드 스튜디오와 인텔리제이 IDE 툴 등을 개발한 Java 개발자들 사이..
안녕하세요! 최근에 나온 프레임워크로 Jetbrains 회사에서 만든 핫한 녀석중에 하나입니다. 바로 'Ktor' 라는 프레임워크인데요, 이 프레임워크는 애초에 Java 언어를 주력으로 개발, 기획하고 있는 Jetbrains 회사의 새로운 모델입니다. Jetbrains 사는 이미 IntelliJ IDE, Android Studio, DataGrip, WebStorm 등 다양한 개발 편의 도구인 IDE를 만드는 회사로 이미 명성이 자자합니다. 대부분의 스타트업 회사 및 신규 런칭 개발 프로젝트건에서도 빠지지 않고 사용하는 툴이기도 합니다. 가장 먼저 메인 페이지의 링크입니다. https://ktor.io/ Ktor: Build Asynchronous Servers and Clients in Kotlin K..

Author: 니용 Java에는 extends와 implements 등으로 상속을 받고 있습니다. Kotlin은 그보다 더 쉽게 상속이 가능합니다. 먼저 상속할 클래스 앞에 open 키워드를 붙입니다. open class Person { var name: String? = null val gender: String? = null val age: Int? = null } class PersonInfo : Person() 상속의 방식은 콜론(:)을 기준으로 가능합니다. 주의: data class는 open 키워드를 붙일 수 없습니다. 추상 클래스와 인터페이스 // 추상클래스 abstract class A { // Java와 마찬가지로 적어도 한 개 이상의 추상메소드가 있어야 해요 abstract fun ma..

Author: 니용 Kotlin에서 제공하는 객체 타입 중 연관 타입끼리 관계가 없어도 2개 혹은 3개를 쌍으로 가지고 있는 객체가 있습니다. 2개인 경우 Pair라고 하고, 3개인 경우는 Triple이라고 합니다. Pair val pair1 = Pair("Same", "Type") val pair2 = Pair("Another Type", 8080) // 명시적 타입 선언 val pair3 = Pair("Same", "Type") val pair4 = Pair("Another Type", 8080) getter는 .first / .second 또는 .component1() / .component2()로 접근 가능합니다. val pair = Pair("String Val", 838); pair.first..

Author: 니용 Kotlin 언어에서는 각 타입별로 이 변수가 nullable 한 지 판별할 수 있는 함수를 제공해줍니다. String fun validate(input: String?) { if(input.isNullOrBlank() || input.isNullOrEmpty()) { println("String is blank or empty") return false } else { println("input is ${input}") return true } } String Type에서 기본적으로 제공해주는 함수입니다. 객체가 null이거나 빈 객체면(혹은 "")만 가지고 있다면 false를 반환합니다. Generic fun printHashcode(generic: T) { println(gene..

오래전에 Java에서 JPA를 사용하는 글을 올려본 적이 있어요. 그래서 이번에는 Kotlin에서도 가능할 것인지 테스트 겸 프로젝트를 구성해보았습니다. 먼저 프로젝트를 만들어봐야겠죠? IntelliJ를 사용하였고, Spring Initializr를 사용했습니다! File -> New -> New Project에서 Spring Initializr를 선택합니다. 프로젝트명과 그룹도 정해주시고 Type은 Gradle Project, Language Kotlin으로 설정합니다. 다음으로 Dependency를 선택할 부분인데 API의 용도로만 사용하기 위해 심플하게 선택했습니다. 제가 잘못한 게 'Spring Web Starter'가 추가가 안되었습니다 ㅠㅠㅠ 추가해주세요. 프로젝트가 생성되고 build.gra..

Author: 니용 데이터 클래스(Data Class)는 Java에서 DTO의 역할을 하는 클래스와 같습니다. Bean이죠. 특징이 있다면 생성자가 자동으로 생성되는 구조로 되어 있습니다. 예시로 바로 넘어가 보겠습니다. Java의 경우 이러한 형식으로 DTO를 생성하곤 했습니다. public class Abbo { private Integer id; private String nickname; // constructor public Abbo(@NotNull Integer id) { this.id = id; } // getter public getId() { return this.id; } // setter public setId(Integer id) { this.id = id; } // toString..

Author: 니용 Kotlin 언어는 Java와 같지만 약간 다른 Control Flow(흐름 제어)를 가지고 있습니다. 대신 간편하게 사용할 수 있도록 설계되어 있습니다. 삼항 연산자 이전에 글에 작성된 부분입니다. // Java int maxOf(int a, int b) { return (a > b) ? a : b; } // Kotlin fun maxOf(a: Int, b: Int) = if(a > b) a else b Switch Case Kotlin은 Java의 스위치 제어문도 다릅니다. // Java int x = 0 switch(x) { case 1: System.out.print("x == 1"); break; case 2: case 3: System.out.print("x == 2 or ..