RequestDto에 Builder를 써줄 필요는 없었지만, 어쩌다가 썼다가 발생한 에러.
빌더와는 무관할 것 같은데 왜 에러가 나는지 궁금했다.
500 에러요 ???
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; ...
이게 무슨 에러람 .. ? 하고 찾다가 원하는 답을 얻지 못해 집으로 돌아가서
윈도우 데스크탑으로 git pull 받아 시도해봤다.
그런데 이게 웬열. 정상적으로 데이터가 들어갔고, 맥북으로 다시 들어와서 시도했는데 맥북은 여전히 같은 에러였다.
같은 코드인데 왜 맥북만 에러가 나지 ?
뭔가 스프링 프레임워크에서 일어난 것 같다.
친구에게 도움을 요청.
해결 방법은 설정을 바꿔주면 되었다.
알고보니 윈도우에서 쓰고있는 인텔리제이 설정과 맥에서 쓰고있는 인텔리제이 설정이 달랐다.
intelliJ IDEA 에서 Preferences 를 들어가면
이렇게 되어있었는데, Gradle로 바꿔주면 된다.
이게 무슨 차이일까 ??
* 그 전에, Build와 Compile 이란?
Build ???
빌드를 이야기하면 컴파일이라는 단어도 같이 정리되곤 하는데 컴파일은 빌드 안에 포함된다고 생각하면 된다.
인텔리제이와 같은 IDEA에서는 보통 프로젝트를 실행하면 자동으로 빌드를 실행한다.
-> 프로그래밍 된 코드를 컴파일하고 실행 가능한 결과물로 만드는 과정.
IDEA에서는 보통 실행을 시키면 컴파일을 포함한 빌드 과정을 거쳐 실행 가능한 결과물을 만들고 그것을 실행시킨다.
Compile ???
사람이 이해할 수 있는 프로그래밍 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 더욱 저차원적인 코드 또는 기계어로 변환하는 것을 의미한다. 자바의 경우 JVM이 이 컴파일러 역할을 수행해주고 있다. 이와 같은 컴파일 과정을 거치면서 프로그래밍 언어로 작성된 코드가 문법적으로 이상은 없는지 또는 Checked Exception은 없는지 검사를 하고 알려준다.
Gradle Build
오픈 소스 빌드 자동화 도구.
Gradle은 build.gradle 파일을 사용하며 Maven과 동일하게 개발자가 사용할 라이브러리를 정의해 둘 수 있다.
Gradle 역시 정의된 라이브러리뿐 아니라 그 라이브러리를 사용하는데 필요한 종속된 다른 라이브러리까지 관리해 자동으로 다운로드하여 사용할 수 있게 해 준다.
IntelliJ IDEA Build
인텔리제이 자체에서 제공하는 빌드 자동화 도구.
IntelliJ 빌드 시스템은 IntelliJ의 자체 빌드 메커니즘으로 단순하게 프로젝트의 모든 수정 내용과 종속 파일을 컴파일하는 기능이다.
여기서 문제는 수정 내용과 종속된 파일만 빌드한다는데 있다는 것.
안타깝게도 Maven과 Gradle과 달리 순수하게 빌드를 수행한다.
그로 인해 아티팩트 생성, 리포지토리 배포, CodeGen과 같은 다른 작업을 수행하지 않는다.
위와 같은 이유로 인해 대부분의 개발자들은 Maven과 Gradle과 같은 빌드 툴을 사용한다고 한다.
그리고 둘의 가장 큰 차이점은 증분 빌드 이냐 아니냐 라는 것인데.
증분 빌드(Incremental build)
증분된 부분, 즉 변경된 부분만 빌드를 하는 방식으로 변경되지 않은 것에 대해서는 건너뛰고 빌드를 진행해서
빠른 빌드를 원할 경우 선택하는 방법이다.
IntelliJ IDEA가 바로 증분 빌드인데. -> 그래서 IntelliJ IDEA가 Gradle 빌드 방식보다 빠르게 빌드를 수행할 수 있었던 것.
하지만 증분 빌드이므로 IntelliJ IDEA 빌드 방식은 "최신이다" 라고 판단하여 건너뛰고 빌드를 진행해,
빌드를 진행하고 나온 결과물에 실제로 변경된 부분이 반영되지 않고 빌드가 완료될 수 있다.(두 번째 참고사이트에서 이미 삭제한 파일에 대해서 변경사항이 없다고 판단해 삭제됐던 파일이 그대로 포함된 상태로 빌드가 완료되었다.)
따라서, 정확한 빌드를 원한다면 IntelliJ IDEA 빌드 방식이 아닌 Gradle 빌드 방식을 선택해야 한다.
https://pamyferret.tistory.com/m/62
설정을 바꾸고 다시 확인한 결과, 데이터가 잘 들어갔다 !
'Spring Boot' 카테고리의 다른 글
[Spring boot] exception encountered during context initialization - cancelling refresh attempt (0) | 2022.12.05 |
---|---|
[Spring boot] @RequestMapping (0) | 2022.10.26 |
[spring boot]RestTemplate (0) | 2022.10.24 |
Tistory oepnAPI Key 발급 (0) | 2022.10.12 |
[spring boot/시행착오] Failed to configure a DataSource (3) | 2022.09.30 |