본문 바로가기
  • 개발하는 곰돌이

java38

[Spring Boot] 스프링부트 3.0.0 이상 버전을 사용하려고 할 때 빌드 과정부터 에러가 나는 경우(Kotlin/Java 동일) 작성일 기준으로 Spring Initializr를 사용하여 스프링 부트 프로젝트를 생성할 때 3.0.0 이상인 버전과 2.7.X 버전 중에서 선택할 수 있다. 아직은 2.6.X나 2.7.X 버전을 사용하는 경우가 많으나, 언젠가는 3.0.0 이상인 버전을 사용하게 되는 경우가 더 많아질 수가 있다. 하지만 Java 버전을 국내에서 주로 사용하는 11이나 1.8로 설정하고 3.0.0 이상인 버전의 스프링 부트 프로젝트를 생성하면 최초 빌드 과정에서부터 에러가 발생하게 된다. 에러 로그의 핵심적인 부분만 추려내면 다음과 같다. Incompatible because this component declares an API of a component compatible with Java 17 and the con.. 2023. 1. 17.
[Kotlin] Kotlin에서의 형변환과 스마트 캐스트(Smart Cast) feat. as, is 개요 코딩을 하다보면 필연적으로 자료형을 변환해야 하는 경우가 생긴다. Java에서는 숫자형의 경우에는 변수의 자료형에 따라서 자동으로 형변환이 일어나서 저장되었고, 변수나 객체 앞에 (자료형)을 붙여주는 것으로 강제로 형변환을 할 수도 있었다. Kotlin도 마찬가지로 형변환이 가능한데 이에 대해 정리하고자 한다. 기본 자료형의 형변환 Kotlin의 기본 자료형들은 기본적으로 변수에 대입할 때 자동 형변환을 지원하지 않는다. 예를 들어, Java에서는 실수형에 정수형을 대입하거나 정수형에 문자형을 대입하려고 하면 자동으로 형변환이 일어나서 다음과 같은 코드가 모두 동작했다. double a = 10; boolean c = a == 10;// true int b = 123; a = b;// OK 하지만 .. 2023. 1. 16.
[Spring Boot] Springdoc 라이브러리를 통한 Swagger 적용 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.7 Kotlin 1.7.21(JDK 11) Springdoc Openapi UI 1.6.11 Springdoc은 무엇인가? 이전에 Spring Boot 프로젝트에 Swagger UI를 적용하는 포스트를 작성한 적이 있다. 해당 포스트를 작성할 당시에는 Swagger UI를 제공하는 라이브러리가 Springfox만 존재하는 줄 알았는데, Springdoc이라는 라이브러리에서도 Swagger UI를 제공한다는 사실을 알게되어 이 포스트를 작성하게 되었다. 최근에는 Springdoc을 사용하는 것이 더 선호된다고 한다. Springfox의 경우에는 2020년 7월 이후로 업데이트가 중단된 반면, Springdoc은 최근까.. 2023. 1. 15.
[JUnit5] DB호출 테스트 중 발생한 No ParameterResolver registered for parameter in constructor 에러 해결 에러 발생 배경 JUnit5로 DB 호출 테스트를 하는 도중에 다음과 같은 에러가 발생했다. No ParameterResolver registered for parameter [com.settlement.mapper.TestMapper testMapper] in constructor [public com.settlement.controller.TestController(com.settlement.mapper.TestMapper)]. org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [com.settlement.mapper.TestMapper testMapper] .. 2023. 1. 11.
[SSL] 외부 API 호출 중 발생한 unable to find valid certification path to requested target 에러 해결 에러 발생 배경 프로젝트 진행 중 외부 API를 호출하여 받아온 결과값을 가공해야할 일이 생겼다. 그래서 WebClient를 사용하여 외부 API를 호출하고 가공하여 진행하려고 했는데 다음과 같은 에러가 발생했다. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuil.. 2023. 1. 2.
[Spring Boot] Scheduler를 사용하여 정해진 시간마다 메소드 실행시키기 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.6 Kotlin 1.7.21(JDK 11) MySQL 8 Swagger 3.0.0 MyBaitis 2.3.0 Spring Boot 프로젝트에 Swagger 3.0.0을 적용하는 방법, MyBatis 설정 방법은 아래 포스트를 참고하면 된다. [Spring Boot] Kotlin 기반 Spring Boot 프로젝트에 Swagger 3.0.0 적용하기 [Oracle] Spring Boot 프로젝트에서 Mybatis 세팅하기 with Kotlin 개요 프로젝트를 진행하다보면 정해진 시간마다 특정 동작을 수행해야할 때가 있다. 이 때 Spring Boot에서 제공하는 Scheduler를 사용하면 손쉽게 정해진 시간에 특정 .. 2022. 12. 30.
[Kotlin] 기본 매개변수(Default parameter)와 명명된 인자(Named Arguments) 기본 매개변수(Default Parameter) Kotlin 기본 문법 1 : 개요 및 변수와 함수 Default Parameter는 이전에 함수에 대해 정리할 때 짧게 정리한 적이 있다. Kotlin에서는 함수의 파라미터에 기본값을 지정하여 함수 호출 시 기본값이 지정된 파라미터를 생략하면 해당 기본값을 사용하게 만들 수 있다. 이러한 Default Parameter는 함수의 불필요한 오버로딩을 줄일 수 있다는 장점이 있다. 예를 들어 두 정수의 합을 계산하는 함수가 있다. 이 때, isAbsolute라는 파라미터를 추가하여 true를 전달하면 두 정수의 합의 절대값을 반환하게 만들고 싶을 경우에 Java에서는 다음과 같이 함수를 오버로딩해서 구현해야 했다. // Java public int add(i.. 2022. 12. 27.
Kotlin 기본 문법 10 : 커스텀 getter와 setter 목차 개요 Kotlin의 클래스 역시 Java와 마찬가지로 각 필드에 대한 getter와 setter가 존재한다. 이번 포스트에서는 Kotlin 클래스의 기본적인 getter와 setter 및 Kotlin 클래스의 커스텀 getter와 setter에 대해 정리한다. Kotlin 클래스의 기본 getter와 setter Kotlin에서 클래스를 작성하는 방법은 Kotlin 기본 문법 6 : 클래스와 접근 지정자 포스트에서 이미 다룬바가 있다. Kotlin 클래스의 필드는 기본적으로 Java와 달리 별도의 getter, setter 메소드로 접근하지 않는다. 대신 Kotlin에서는 클래스의 생성자를 작성하면 필드의 종류(val, var)에 따라 자동으로 getter와 setter를 생성해주고, 일반적으로 필.. 2022. 12. 22.