목록개발/Spring boot (5)

Spring boot를 사용 중에 있어, 내 서버의 에러가 곧이 곧대로 반환되는 게 마음에 들지 않았다. 따라서, 클라이언트에 보여지는 건, 프론트엔드 개발자와 약속한 코드가 보여지고직접적인 에러는 서버 콘솔에서 로그로 남게끔 설정하는 과정을 다룬 포스팅을 남긴다. 먼저, global exception handler를 적용하는 이유는 다음과 같다.서버를 만들다보면 어떤 이유에서든 예상하지 못한 예외가 발생할 수 있는데, 이에 대해 매번 try-catch 로 직접 처리하는 것은 비효율적이고 지저분하며, 잊어버릴 수도 있다.따라서, 서버 전역에서 예외를 통합 관리하는 구조가 필요한데, 해당 기능을 해주는 것이 해당 핸들러다.// CustomException.javapackage com.chessy.excep..

이번 포스팅은 스프링부트에서 Api docs를 설정하는 방식에 대해 다룬다.(아마 다음 포스팅은 GraphQL 설정 방식에 대해 다룰 듯 싶다.) Api docs를 사용하기 있어, 먼저 해당 기능 사용을 돕는 라이브러리를 추가한다.// build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-web' // Swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0' implementation 'org.springdoc:springdoc-openapi-starter-common:2.5.0' ..

오늘은 몇날 며칠 숙고했던 Spring boot 에서의 Docker 환경 설정에 대해 다룬다. 포스팅에 앞서, 겪고 있던 문제에 대해 설명하면, 소스 코드 변경 시 해당 변경 사항이 적용되지 않은 채 docker가 재로딩되는 문제였다.재로딩 자체는 의도했던 것이었지만, 변경된 소스 코드가 적용되지 않은 채 변경되었다는 게 문제. 따라서, 마침내 승리한 기록을 남기고자, 미래에 나에게 전하고자 중점 소스 코드 위주로 해당 포스팅을 남긴다. 1. build.gradle 설정을 아래와 같이 추가한다.// Spring Boot DevTools 의존성 추가implementation 'org.springframework.boot:spring-boot-devtools'// bootRun 태스크 설정bootRun { ..

Spring boot 강의를 따라가다가, 구태여 강의에서 얘기하는 H2 데이터베이스를 사용하고 싶지 않았다.때문에 기존에 익숙한 docker를 사용하여 개발 환경을 구축하려 시도했는데,그 과정에서 gradle로 패키지가 병합되지 않는 문제가 발생했다. (./gradlew clean build가 동작하지 않았음) 문제가 발생한 패키지는 JPA. 해당 문제를 해결하기 위해, gpt의 힘을 빌려 해당 문제를 야기할 수 있는 내용들을 훑었다.이를 테면, build.gradle의 dependecies에 제대로 패키지를 삽입했는지부터, import 방식 자체가 잘못되었는지까지. 물론 이 단계에서 에러는 풀리지 않았고, 구글을 서칭함으로써 문제를 해결할 수 있었다.먼저, 인텔리제이 우측 상단에 있는 코끼리 모양을 ..

패키지가 정상 빌드되지 않는 원인을 찾다가, java의 버전 문제라는 것을 알게 되었다.분명 17버전을 설치했던 기억이 있는데, 아래와 같이 11버전이라니.openjdk version "11.0.19" 2023-04-18 LTSOpenJDK Runtime Environment Zulu11.64+19-CA (build 11.0.19+7-LTS)OpenJDK 64-Bit Server VM Zulu11.64+19-CA (build 11.0.19+7-LTS, mixed mode) 이를 해결하고자 셀 스크립트를 수정했다. 예전에 node도 비슷한 경우로 버전을 올려야 하는 경우가 있었기에, 이번엔 다소 쉬웠다. 셀 스크립트를 수정하는 이유는 다음과 같다. 이 곳(macOS Linux, zsh) 세션이 시작될 때,..