JVM

JVM/Spring

Spring JacksonObjectMapper는 어떻게 jackson-module-kotlin을 등록하나

🤣 서론 이전에는 jackson-module-kotlin 모듈을 추가하면 자동으로 spring objectMapper에서 사용한다길래 그렇구나 하고 넘어갔었다. 찾아보게 된 계기는, 회사에서 만든 objectMapper가 jackson-module-kotlin 모듈을 추가했음에도 제대로 동작하지 않았었다. 처음에는 다른 문제 때문이라 생각했지만, 몇 번 다시 보니 objectMapper에 KotlinModule()을 넣어주는 부분이 없었다. 역시 모듈만 추가 한다고 자동으로 모든 objectMapper에서 적용되지 않을 텐데.. 생각이 매우 짧았다. 그래서 스프링에서는 어떻게 모듈 추가만으로 jackson-module-kotlin 를 사용하는지 궁금해서 찾아보게 되었다. 🙂 본론 처음으로 1차원적으로 찾..

JVM/Spring

[Error] Invalid character found in method name.HTTP method names must be tokens

😲 서론 회사 프로젝트를 하다가 내부 통신 테스트를 로컬로 진행하다가 만난 상황 🙂 본론 보내는 쪽 에러 Unsupported or unrecognized SSL message 받는 쪽 에러 Invalid character found in method name[~~].HTTP method names must be tokens 원인 https 호출이 가능하지 않는 곳에 https를 호출한 경우 해결방법 호출 url을 https -> http 로 호출하면 된다. 🤣 결론 파파고, 구글 없이 개발 모태

JVM/Kotlin

[Kotlin] 코틀린 학습 시작!

📚서론 - 본론 - 결론 취업을 준비하고, 회사 채용공고를 보면서 가장 많이 느껴진 부분은 이제 Java가 아닌 Kotlin을 정말 많이 사용하고 있다는 걸 느꼈다. 그렇게 생각한 이유는 아무래도 대부분의 회사에서 자격요건에 Java만을 표기하기 보다는 Kotlin을 곁들인 경우가 많았다. 그리고 지금까지 내 주위에서 Kotlin을 써본 사람들 모두 입을 모아 이렇게 말한다. "자바로 돌아가기 싫다." 모두 코틀린의 장점으로 무조건 나오는 말은, Java에 비해 매우 간결하고, Java와 호환이 되며, 마지막으로 Null 처리에 대해서 아주아주 칭찬이 많았다. 왜 어떻게 Java를 대체하려고 웅성웅성인지 이제 너무 궁금해서 한 번 공부해봐야겠다!

JVM/Spring

[Spring] How to change the CamelCase to SnakeCase when i use POST form-url-encoded in Spring Cloud feign Client

😢 서론 KakaoPay API 통신을 feign client를 통해 진행하는 중 POST로 form-urlencoded 타입으로 전송해야 하는데, @JsonNaming 애노테이션이 form-urlencoded 타입에서는 정상적으로 작동하지 않아 해결한 내용을 정리해봅니다.. ㅜ 이 글은, feign Client를 통해 요청을 보내는 방법을 정리합니다. 본인의 서버 컨트롤러로 받는 방법으로는 여기 에서 많은 해결책이 나와있습니다. 참고 바랍니다!! 🫢 본론 FeignClient @FeignClient(name = "kakaoPay", url = "https://kapi.kakao.com/v1", path = "/payment", configuration = CoreFeignConfiguration.cla..

JVM/Spring

[Spring] Spring Cloud Feign logging 설정

😢 서론 처음에 설정했을땐 logging not working.. logging이 작동하지 않아 간단하게 정리해봅니다. 🙂 본론 public class CoreFeignConfiguration { @Bean Logger.Level feignLoggerLevel() { return Level.FULL; } } @FeignClient(configuration = CoreFeignConfiguration.class) public interface KakaoPayClient { ... } 코드를 추가해도 로깅이 찍히지 않아서 검색해본 결과 application.yml 에서도 logging을 설정해주어야 했었습니다. Fiegn Client가 포함된 패키지 혹은 클래스에 대해서 Spring Boot 로깅 수준을 D..

JVM/Spring

[Spring] Error creating bean with name 'configurationPropertiesBeans' defined in class path resource - Spring Cloud

🫣 서론 스프링 클라우드 gradle 설정 시 만난 오류.. 🔥 본론 [main] ERROR org.springframework.boot.SpringApplication - Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationPropertiesBeans' defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class]: Post-processing of merged bean ..

JVM/Spring

[Spring] 통합테스트 환경 분리 설정 - Gradle Kotlin DSL

🧐 서론 테스트를 돌릴 때 통합테스트는 Spring을 올리기 때문에 생각보다 긴 시간을 잡아먹습니다. 현재 프로젝트에서 통합테스트가 별로 없음에도 통합테스트와 유닛테스트 구분 없이 한 번에 돌리다보니 시간이 비효율적이라고 느꼈고, 환경을 분리해야겠다고 생각이 들어 내용을 정리해보겠습니다. 참고 참고로 gradle은 Groovy 가 아닌 Kotlin 으로 진행된 점 참고하여 봐주시길 바랍니다! 😎 본론 build.gradle.kts 설정 sourceSets { create("intTest") { compileClasspath += sourceSets.main.get().output runtimeClasspath += sourceSets.main.get().output } } val intTestImplem..

JVM/Spring

[Spring] Exception 어떻게 처리할까?

🤔 서론 Exception Handler 를 구현하다 리펙토링 한 경험을 작성합니다. 🫢 본론 기존 Exception 은 상황에 맞게 각각 Custom Exception 을 만들어서 처리를 했습니다. 문제점 Exception 마다 각각의 Handler 를 만들어주어야 했습니다. 클래스는 통합해서 작성해도 되지만, 여기서 중요한 건 만든 각각의 Custom Exception 별로 별도의 Handler를 추가로 계속 작성해주어야만 했습니다. 중복된 코드 private static final String MESSAGE = "패스워드가 일치하지 않습니다"; @ExceptionHandler(value = {PasswordMismatchException.class, BadCredentialsException.cla..

Hyo Kim
'JVM' 카테고리의 글 목록 (3 Page)