본문 바로가기
반응형

kotlin17

[Spring][Kotlin] Main class name has not been configured and it could not be resolved Execution failed for task ':bootRun'. > Failed to calculate the value of task ':bootRun' property 'mainClass'. > Main class name has not been configured and it could not be resolved 어플리케이션 띄울때, main class를 못찾는다고 한다. // build.gradle.kts springBoot { mainClass.set("com.withhamit.chatting.ChattingApplicationKt") } mainClass 위치를 명시적으로 지정해준다. 코틀린으로 작성한 경우 자바로 컴파일될때 파일명에 Kt가 붙기 때문에 ChattingApplication.. 2021. 6. 26.
[채팅] 1. Spring boot WebSocket Handler 기본 세팅 // ReactiveWebSocketHandler.kt @Component class ReactiveWebSocketHandler : WebSocketHandler { private val log = LoggerFactory.getLogger(this.javaClass) override fun handle(session: WebSocketSession): Mono { return session.receive() .map { it.payloadAsText.also { log.info(it) } }.then() } } WebSocketHandler 인터페이스를 상속받은 클래스를 만들어 Component로 등록한다. handle에서 메시지가 들어올 때, 할 일 들을 명시해줘야하는데 일단은 돌아가는지 확인하는 .. 2021. 6. 22.
[kotlin] property, backing field kotlin에서는 필드가 아닌 프로퍼티를 정의한다고 합니다. val name: String = "" // 불변 var name: String // 가변 프로퍼티는 var, val로 선언할 수 있습니다. var는 가변변수로 값을 변경할 수 있습니다. val는 불변변수로 값을 변경할 수 없습니다. java에서는 getter, setter를 보통 get필드이름. set필드이름 이라는 함수명으로 개발자가 직접 만들어 줬어야 합니다. kotlin에서는 프로퍼티에 getter, setter를 정의할 수 있습니다. data class MyTest ( val name: String ) { val fullName: String get() = "full $name" var diffName: String = "" get().. 2021. 2. 4.
[kotlin][coroutine] awaitRetrieve 응답이 200이고 응답 body에 대한 처리만 하고 싶은 경우 retrieve. 이 외에 응답 코드가 4xx, 5xx 등 특정 코드에 따라 다른 결과를 주고 싶거나 응답 헤더를 사용하고 싶은 경우는 exchange를 사용하자. (참고 : [spring] webClient error 처리) 평소에 4xx, 5xx 일 때 에러는 신경안쓰고 body에 대해서만 고려해서 retrieve를 많이 사용했었다. coroutine으로 전환하면서 awaitRetrieve 를 쓰려고 했는데 없었다. 그러나 package org.springframework.web.reactive.function.client.WebClientExtension 에 awaitExchange 함수는 있다. (참고) suspend fun Reque.. 2020. 4. 5.
[JUnit5] @ParameterizedTest @ParameterizedTest 어노테이션은 테스트 함수에 파라미터로 TC나 결과 등을 주입할 수 있다. // build.gradle.kts dependencies { // add testImplementation("org.junit.jupiter:junit-jupiter-params:5.5.2") } 의존성추가 private fun String?.toIntOrNull(): Int? { return if (this.isNullOrEmpty()) null else try { this.toInt() } catch (e: NumberFormatException) { null } } 테스트를 위와 같은 확장 함수를 하나 만들었다. 문자열이 null이거나 빈 경우 null을 반환하고 아닌 경우 문자열을 Int로.. 2019. 12. 15.
[IntellJ] Kotlin 코드를 java 코드로 확인하기 Tools > Kotlin > Show Kotlin Bytecode 클릭 왼쪽에 있던 코틀린으로 작성했던 Board.kt가 오른쪽과 같이 바이트코드화 되어 결과를 확인할 수 있다. 오른쪽 위에 Decompile 버튼을 누르면 위와 같이 java 코드로 확인할 수 있다. 2019. 12. 9.
반응형