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

Development48

[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.
[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.
[Spring Boot] application.properties와 application.yml의 차이점 목차 개요 Spring Boot 프로젝트에서는 일반적으로 프로젝트의 각종 설정을 application.properties 또는 application.yml 파일을 통해 하게된다. 기본적으로 Spring Initializr를 통해 Spring Boot 프로젝트를 생성하면 application.properties가 생성되지만, Spring Boot 설정을 위해 구글링을 하다 보면 application.yml에 대한 내용이 상당히 많이 나온다. 따라서, application.properties와 application.yml의 차이를 정리하려고 한다. properties와 yml의 차이점 properties와 yml의 대표적인 차이는 내부 구조가 있다. properties의 경우엔 각 줄마다 key=value의.. 2023. 1. 4.
[Oracle Cloud] 오라클 클라우드 VM 인스턴스 생성 및 원격 접속 목차 클라우드 컴퓨팅 서비스를 사용해야겠다고 생각하게 된 계기 여러가지 프로젝트를 진행하다보면 팀을 이뤄서 진행하거나 다른 컴퓨터를 사용하여 프로젝트를 진행하는 경우가 필연적으로 생길 수밖에 없다. 이 때 진행하는 프로젝트가 DB에 연동하는 프로젝트인 경우에는 팀원들마다 혹은 작업하는 컴퓨터마다 따로 DB를 설치하여 세팅해야하고, 테스트 데이터를 추가하거나 수정할 때마다 매번 동기화를 시켜줘야 하는 번거로움이 있었다. 그렇다고 하나의 컴퓨터에 DB 서버를 설치하여 접속하기에는 회사에서 진행하는 프로젝트가 아닌, 소규모 프로젝트의 경우엔 서버 컴퓨터가 계속 켜져있어야 한다는 현실적인 문제도 있다. 이러한 문제 때문에 좋은 방법이 없을까 찾게 되었고 그렇게 찾게 된 방법이 클라우드 컴퓨팅 서비스를 사용하는 .. 2023. 1. 2.
[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.
[Swagger] 스웨거 페이지 접속 시 Failed to load API definition. 에러 해결 API 테스트를 위해 스웨거를 이용하던 중에 위와 같은 에러가 뜨면서 인덱스 페이지에 접속되지 않는 문제가 발생했다. Fetch error undefined http://localhost:8080/v2/api-docs라는데 /v2/api-docs가 정의되지 않아서 불러올 수 없다고 한다. 실제로 해당 url로 접속해보면 에러 페이지가 반겨주는 것을 볼 수 있다. NPE가 떴는데 파라미터의 설정값 중에 null있다는 것 같다. 이랬던 파라미터 설정을 이렇게 paramType에 query를 설정해줬다. 정상적으로 실행된다. 2022. 12. 29.