프로그래밍/Kotlin 13

Rest API와 Grpc API 서버를 하나로 서비스 할 수 있다고?!

Rest API와 Grpc API 서버를 하나로 서비스 할 수 있다고?! - 부제 (armeria + kotlin + spring boot integration)결론적으로 내가 하는 게 아니라, armeria가 다 해줍니다. (킹왕짱 armeria의 아버지 이희승님 찬양 합니다.) 요즘은 armeria를 붙여서 써 보고 있는 중인데, armeria의 장점은 크게 보면, 아래와 같다.비동기 웹 프레임워크grpc, graphql, thrift 동시 지원 가능 (한 서버로 프로토콜 다르게 서빙이 가능한 최고의 장점)spring 과도 통합이 가능하다.spring은 크게 보면, 2가지가 있다.spring frameworkspring webfluxarmeria는 spring webflux와도 연동이 가능하고, sp..

kotlin - jackson 관련 이슈 (토비의 스프링 6 강의)

토비님의 스프링 6 강의를 듣다가, 아래와 같은 코드를 입력 했었다. (자바로 안하고, 코틀린으로 작성 했을때의 문제이다)data class Payment( val orderId: Long, val currency: String, val foreignCurrencyAmount: BigDecimal, val exchangeRate: BigDecimal, val convertedAmount: BigDecimal, val validUntil: LocalDateTime,)import com.fasterxml.jackson.annotation.JsonIgnorePropertiesimport java.math.BigDecimal@JsonIgnoreProperties(ignoreUnknown = true)..

ktlint lint 적용

ktlint 정상혁님이 써주신, kotlin lint를 위한 가이드 문서가 잘 소개되어 있습니다. https://blog.benelog.net/ktlint 해당 방식에서는 크게 보면 총 2가지의 방식을 설명하고 있습니다. gradle 빌드 설정 IntelliJ 설정 위와 같은 방식 중에서 review repo, point repo에 도입한 방식은 첫번째 방식인 gradle build 설정을 통한 kotlin lint를 도입하였습니다. https://kotlinlang.org/docs/coding-conventions.html kotlin 언어의 coding convention은 kotlin official로 정의를 하고 있는 특정한 규약들이 있습니다. (java의 경우, Google style guide..

kotest 관련 @Transactional rollback 안되는 이슈

test 코드의 상위 패키지 레벨에 아래 설정을 넣어준다. object KotestConfig : AbstractProjectConfig() { // rollback 관련 동작 안해서 아래 설정 추가 override fun extensions() = listOf(SpringTestExtension(SpringTestLifecycleMode.Root)) } https://kotest.io/docs/framework/project-config.html Project Level Config | Kotest Kotest is flexible and has many ways to configure tests, such as configuring the order of tests inside a spec, or h..

Kapt 관련 오류시 참조 (superclass access check failed)

superclass access check failed: class org.jetbrains.kotlin.kapt3.base.javac.KaptJavaCompiler (in unnamed module @0x37be58b7) cannot access class cohttp://m.sun.tools.javac.main.JavaCompiler (in module jdk.compiler) because module jdk.compiler does not export cohttp://m.sun.tools.javac.main to unnamed module @0x37be58b7 위와 같은 오류가 발생하길래 뭔가 했더니, Java9 이후부터 모듈 시스템이 등장 했는데, 이때문에 이런 오류가 발생하는 것 같다. JDK..

kotlin + junit의 생성자 주입시 오류

kotlin의 경우 생성자 주입을 그냥 하게 되면, 오류가 발생하게 되는데, 아래처럼 해결 하는 방법이 있다. 1. @Autowired constuctor를 사용하는 방법 class SimpleServiceTest @Autowired constructor ( val simpleService: SimpleService ) { @Test fun `이렇게 하면 결과가 나온다`() { } } 2. @TestConstructor(autowireMode = TestConstructor.AutowireMode.ALL) 를 활용하는 방법 @TestConstructor(autowireMode = TestConstructor.AutowireMode.ALL) class SimpleServiceTest ( val simple..

kotest 생성자 bean 주입 오류 - Specs must have a public zero-arg constructor

kotest에서 빈을 생성자 주입으로 쓰려고 하면, Specs must have a public zero-arg constructor 오류가 발생 할 수 있다. 이 때에는 kotest-extension-spring 모듈이 필요로 하다. kotest extension spring 라이브러리가 두개가 검색 되곤 하는데, 헷갈리면 안된다. https://kotest.io/docs/extensions/spring.html Spring | Kotest Kotest offers a Spring extension that allows you to test code that uses the Spring framework for dependency injection. kotest.io 실제 docs를 보면, 1.1.3 ..

Kotest 기본만 알아보자

kotest link: https://kotest.io Kotest is a flexible and elegant multi-platform test framework for Kotlin with extensive assertions and integrated property testing. Testing Styles junit 스타일 지원, JS에서 많이 사용하는 jest와 유사한 테스트 스타일 지원, goovy로 작성하는 spock과도 유사한 형태의 behavior test 스타일도 각기 모두 지원한다. 테스트 스타일 종류 Fun Spec(Scala) Describe Spec(JavaScript framework) Should Spec(kotest) String Spec(kotest) Behavior..

반응형