본문 바로가기

Spring

(6)
JpaSystemException: Could not extract column [6] from JDBC ResultSet [MONTH] 오류 해결 기존 프로젝트에 기능 추가를 하는 중, 개발 환경에서 db 스키마 변경이 필요했다. 문제는 스키마 변경 후 데이터베이스 정합성, 도메인 무결성 등을 위배하는 데이터들 때문에 기존에 정상적으로 작동하던 API 중 몇몇 API에서 오류가 났다. 그중에 한 API 오류 해결 사례를 정리하는 포스팅.  에러 발생{"code": 400,"message": "Bad Request / Could not extract column [3] from JDBC ResultSet [MONTH] [n/a] / org.hibernate.exception.GenericJDBCException: Could not extract column [3] from JDBC ResultSet [MONTH] [n/a] / class org.sp..
비밀번호 없이 회원가입, 로그인 구현 (kotlin + spring boot) 벨로그(https://velog.io/) 서비스를 이용하다 회원가입, 로그인에서 독특한 플로우를 발견했다. 우선 로그인 안 한 상태로 벨로그에 접속하면 우측 상단에 로그인 버튼이 보인다. 로그인 버튼을 클릭하면 이런 로그인 모달이 뜬다. 이메일을 입력 후 로그인 버튼을 누르면, 벨로그에 가입된 회원인 경우 이메일로 로그인 링크가 발송되며, 가입된 회원이 아닌 경우에는 이메일로 회원가입 링크가 발송된다. (혹은 사용자가 회원가입을 하지 않은 것이 확실하다면 모달 우측 하단의 ‘회원가입’ 텍스트를 틀릭하면 모달창에서 ‘로그인’ 부분이 ‘회원가입’으로 텍스트가 변경된다.)이메일로 로그인 링크를 받은 경우 링크 클릭 시 로그인한 상태로 벨로그 메인 페이지로 이동한다. 이메일로 회원가입 링크를 받은 경우 링크를 ..
클린 스프링: 스프링 개발자를 위한 클린 코드 전략 - 이일민(토비) 2024 인프콘 다시보기 - 클린 코드에 대한 이일민(토비)님의 강의를 들으며 내용을 정리해 보았습니다. [참고]영상은 아래 링크에서 보실 수 있습니다.https://youtu.be/d3krJ4el8Hg?si=4gK7MB1HM5Kt5uob   개발자에게 기술 성장과 관련된 책을 추천하면?첫 번째 - 클린 코드향로님의 클린 코드에 대한 말클린코드를 지향할수록 점점 구현 능력이 떨어진다 이런 생각 해보신 적 없으세요?클린 코드에 집중할수록 좋은 코드, 구조, 설계에 대해 집착하게 되어 구현 속도가 느려지고 구현 능력이 떨어진다.클린 코드라는 말이 처음 쓰인 곳 : 켄트 벡의 테스트 주도 개발Clean Code That Works (작동하는 클린 코드)그러나 클린 코드에 대한 다음과 같은 오해가 존재한다.클린..
스프링부트 코틀린 프로젝트에 jsp 띄우기 이번에 프로젝트에 jsp 파일을 연동하는 설정이 필요했다. 그런데 이 프로젝트 설정에서부터 쉽지 않았기에 간단하게나마 해결 과정을 기록하고자 한다. 프로젝트 구성프로젝트는 멀티 모듈 프로젝트이고, 애플리케이션을 실행시키는 bootstrap 모듈과 connector 모듈 두 가지가 존재한다. 문제상황먼저 문제점은 설정을 다 마쳤음에도 jsp 페이지를 포워드하는 컨트롤러를 호출할 때 404 에러를 뱉어낸다는 것이었다.컨트롤러 함수 호출까지는 정상적으로 되나 그 이후 jsp 파일을 못 찾는 현상이었다. jsp 파일 404 키워드로 구글링을 해서 첫 몇 페이지는 모두 읽어보고 적용해 보고 많은 시간 삽질을 했다. jsp 의존성 추가 및 설정connector 모듈 build.gradledependencies { ..
설정 파일을 통한 환경별 Property 관리 개요 : 설정 파일을 통한 환경별 Property 관리 필요성이번에 알림톡, 푸시 알림 기능을 프로젝트에 추가하였다. 개발 환경에서 테스트를 할 때 실제 사용자들에게 알림톡, 푸시 알림이 가는 것을 방지해야 한다.물론 일반적으로는 개발 환경에서는 개발용 DB를 따로 사용할 것이다.그런데 현재 개발용 DB로 운영 DB를 덤프 떠서 사용 중이다.따라서 개발 환경에서 알림톡, 푸시 알림 관련 로직을 실행할 때 목적지를 개발자의 핸드폰으로 바꿔주는 절차가 필요했다. 환경별로 다른 설정 파일 로드하기Spring Boot에서는 프로파일을 사용하여 환경별로 다른 설정 파일을 로드하고 애플리케이션을 실행할 수 있다.프로파일별 yml 파일 작성 각 프로파일에 맞는 application-{profile}.yml 파일을 작..
BasicErrorController 상속받아 커스텀하기 기존에 사용하고 있는 API 응답 형식은 다음과 같다.{ "code": , "message": , "timestamp": , "path": , "method": } 그런데 일정 부분의 예외처리를 직접 응답을 보내지 않고, BasicErrorController를 통하여 응답을 보내야 하는 요구사항이 생겼다.이에 따랐을 때, 기존에 사용하는 API 응답 형식과는 다른 점이 있었다. BasicErrorController에서 보내주는 응답의 형식은 다음과 같다.{ "timestamp": , "status": , "error": , "message": }(method, path를 안 보내주고 있는 것과 순서가 다른 것은 무시하기로 한다.) 기존 API 응답에서는 H..