반응형

kotlin 9

Kotlin (꿀)Tips!

Kotlin은 이미 많은 곳에서 사용하여 기본적인 문법에 대해선 다들 아실 것이라 생각합니다. :) 이미 많은 곳에서 Kotlin을 도입했거나 도입중 일 것입니다. 그리하여 이번 글에서는 Kotlin은 Tip의 관한 내용을 정리해보려합니다. 이 글은 Kotlin 홈페이지에서 Kotlin tips 의 내용을 정리한 글입니다. 좀 더 자세한 내용을 원하신다면 링크를 참조해주세요. 1. Timing Code 메서드 혹은 로직의 실행시간을 측정하려면 기존에는 System 시간을 가져와서 빼거나 StopWatch를 이용해서 start하고 stop하는 불편함을 감수했었습니다. 하지만 kotlin에서 지원하는 measureTimedValue 를 사용한다면 쉽게 실행시간과 반환 값을 구할 수 있습니다. @OptIn(E..

Develop/kotlin 2022.04.18

[Kotlin] 테스트 코드 쉽게 작성하기 ( KotlinFixture, MockK, LiveTemplates )

개인적으로 테스트 코드는 중요하다고 생각합니다. 하지만 다양한 이유로 테스트 코드는 많이 Skip 됩니다. 시간적 여유가 없을 때 테스트 코드를 위한 노가다 작업이 많을 때 그 외 등등... 이 방법을 백퍼센트 보완하진 못하지만 좀 더 용이하게 작성하기 위해 제가 사용하는 방법을 공유합니다. 목차 MockK KotlinFixture Live Templates 1. MockK Java 진영에는 Mockito가 있다면 Kotlin 진영에서는 Mockk가 있습니다. Mockk는 Java에서 Mock처리하는 것과 동일하게 Kotlin스럽게 Mock을 처리할 수 있도록 도와줍니다. 환경구성 build.gradle.kts testImplementation 'com.ninja-squad:springmockk:{ver..

Study/test 2021.12.27

[Kotlin] Spring-Batch QuerydslPagingItemReader 개선편

들어가기 전에 Spring-Batch 에서 Chunk 개념을 이용하려면 ItemReader를 사용합니다. ItemWriter에서 ItemReader에서 사용한 쿼리에 영향을 미치는 상태값을 변경할 경우가 있습니다. 이와 같은 경우 필요한 기능을 정리한 글입니다. ItemReader를 사용한 Query ItemReader는 Query에 offset과 limit을 사용합니다. // 1 select id, address, name from person where state = 'STUDY' limit 5 // 2 select id, address, name from person where state = 'STUDY' offset 5 limit 5 // 3 select id, address, name from ..

[kotlin] Spring-Batch Alert 처리 ( Logback을 이용한 Slack 연동 )

이번 글에서는 Spring-Batch에서 오류가 났을 경우 에러를 Alert처리하는 글을 정리하겠습니다. 모든 소스는 Github에 올려두었습니다. Alert처리하는 방법은 여러가지 종류가 있습니다. Prometheus, Alert-Manager를 이용한 방법 Slack을 이용한 Webhook 방법 그 외 등등.. 이번 글에서는 Slack을 이용한 Webhook 방법에 대해서 정리하겠습니다. Prometheus, Alert-Manager를 이용한 방법은 추 후에 작성예정입니다. Prometheus, Alert-Manager 구현 방법에 대해서는 여기 를 참조해주시기 바랍니다. 적용 방법 Logback을 적용하여 Error 로그가 작성된 경우 Slack으로 Webhook을 날리는 방식입니다. Slack C..

[Kotlin] Spring-Batch (JPA 적용) Junit5를 이용한 Test Code 작성

이번 글에서는 JPA를 적용한 Spring Batch Job을 테스트하는 글을 작성하겠습니다. 모든 소스는 Github에 올려두었습니다. 들어가기 전에 테스트 환경에서의 데이터베이스는 H2, Test Docker Container, Local 환경에 Database 띄우기 등 다양한 방법으로 테스트할 수 있습니다. 하지만 이번 글에서는 실제 DB에 붙었을 경우 테스트 데이터를 생성 삭제하기 위해서는 어떻게 하는지에 대해 작성했습니다. Job 먼저 JOB을 살펴보겠습니다. @Configuration class SimpleJobConfiguration( val jobBuilderFactory: JobBuilderFactory, val stepBuilderFactory: StepBuilderFactory, v..

[Kotlin] Application 설정값 가져오는 방법 - ConfigurationProperties로 구성

이번 글에서는 Kotlin에서 아래의 application.yml의 설정값을 읽어오는 방법을 정리해보겠습니다. 이 글에서 사용하는 설정방법은 SpringBoot 2.2.1 이상 버전부터 지원가능한 방법입니다. 모든 소스는 Github에 올려두었습니다. Application.yml sample: kotlin: language: kotlin study-days: 30 java: language: java study-days: 90 test: javaTest build.gradle.kts 아래의 디펜던시가 추가되있어야 ConfigurationProperties를 사용할 수 있습니다. dependencies { annotationProcessor("org.springframework.boot:spring-boo..

Develop/kotlin 2021.05.17

Querydsl-JPA 코틀린스럽게 작성하기 ( 설정 포함 )

글 작성 목차는 아래와 같습니다. Kotlin Project에 Querydsl-JPA 설정 Kotlin스럽게 작성하기 Kotlin Project Querydsl-JPA 설정 먼저 Spring Initializer를 이용하여 Kotlin 프로젝트를 생성해보자! Build Script : Gradle Language : Kotlin Packaging : Jar Spring Web : Web Project를 위한 디펜던시 ( @RestController, @Service ... ) Spring Data JPA : JPA를 설정을 위한 디펜던시 ( Entity, Repository ) H2 Database : Entity기반으로 테이블을 생성할 메모리형 데이터베이스 코틀린 프로젝트를 만들고 build.gradl..

Develop/kotlin 2021.04.29

[코틀린 프로그래밍] Chapter.02 Java의 개발자를 위한 코틀린 필수 사항

목표 숫자와 문자열 변수 정의하기 상수 만들기 타입 명시하기 계산 결과를 이용해 문자열 표현식 만들기 멀티라인 문자열 만들기 이번 챕터에서는 자바 개발자들은 코틀린이 가진 뉘앙스를 배우는 동안에는 자바에서 사용하던 버릇을 잊어야합니다. 코드량 Java >> Kotlin 세미클론 Kotlin은 자바에 비해 많은 것들이 선택적입니다. 대표적인 예로 모든 표현식이나 명령문 마지막에 세미클론(;)을 생략되었습니다. // Java int a = 3 * 6; // Kotlin val a = 3 * 6 변수타입 코틀린은 정적 타입 언어입니다. 모든 변수를 선언할 때 타입을 지정해야하는 것은 아니지만 일반적으로는 지정을 해야합니다. 타입이 지정된 변수는 컴파일 시점에 검증됩니다. fun main() { val gree..

Study/kotlin 2021.03.29

[Kotlin] Spring-Batch 적용

이 글은 Kotlin으로 Spring Batch를 구현한 내용을 정리한 내용입니다. 코드의 양이 많아 중요한 부분 위주로만 작성하였습니다. 모든 코드는 Github에 있습니다. 참조해주세요. 글을 작성하기에 앞서 작업한 내용은 지난번 작성한 글을 기준으로 작성하였습니다. 함께보시면 이해하시기 편할 것 입니다. 이 글에서는 Spring-Batch가 무엇인지에 대해서는 다루지 않겠습니다. Spring-Batch를 Java, Querydsl-JPA로 구현이 가능해야 이해하는 데 무리가 없을 것입니다. build.gradle.kts import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { val kotlinVersion = "1.4.31" id("org..

728x90
반응형