메모하다가 문득 드는 생각이, 어차피 공식 Spring-Boot documentation 스샷하고 메모하는건데, 공식 문서 스샷 전부 다 하지 말고, 제목만 기입 & 필요한 내용(요약)만 기입하고, 자세한 건 공식 문서 참고하자!
-> 공식 문서에 검색란 있으니 이를 활용할 것!

->spring-boot-loader를 사용함.
cf.)파일 구조는 그냥 참고만 하자!





->2번 째 설명할 때, 계층 구조로 설명하던데, 이 계층을 좀 잘 알아두는 게 좋을 거 같음..

->pom.xml에 maven-plugin 코드를 넣으면 된다.

->target 디렉토리에 jar 파일 있음 & jar 파일 구성 보는 방법
->jar 파일 실행 코드
->cf.)직접 vscode에 돌려보니 잘 작동함을 알 수 있다!!

'분명, main문 실행할 때는 잘 됐는데, jar 파일 실행하니깐 안돼...(멘붕)'
p.s. 우리는 에러 문구를 잘 해석하고 그에 맞게 대응하면 된다!
※에러 내용: /error에 대한 명시적인 것이 없어요 ㅠㅠ 라는 의미.

->요약하자면, IDE(main문 돌리는 것)에는 /error 경로에 대한 것을 자동으로 제공해주지만, JAR 파일 빌드하고 실행할 때는 이런 거 안해주니, 너가 직접해라!!
<해결책>
1. @controllerAdvice를 통해 error.html 출력하게 하기!
->@controllerAdvice는 모든 예외(에러)에 대해 전역적으로 처리하는 기능을 가지고 있다! 이를 이용해서 /error 페이지를 대신 처리해주는 것이다.

->demo 폴더 밑에 controller 폴더 하나 더 만들고(필수는 아님), 여기에 전역변수핸들러 자바 파일 하나 추가.
->코드의 자세한 내용은 주석 참고!
2. error에 해당하는 error.html 만들기
->error.html은 resources/templates 폴더에 만들기!

->코드의 자세한 내용은 주석 참고!
3. pom.xml에 thymeleaf dependency 추가하기!

->처음에 이거 추가 안해서 1,2번 완료했어도 작동이 안됐었음.
->thymeleaf는 view template engine이라고 함. 즉, error.html을 작성했는데, 이거에 관련한 dependency가 없으므로, 제대로 작동이 안됐던 거 였음.
4. mvn clean install로 빌드 다시하기!
->빌드를 새로 안하면, 웹에 적용되지 않는다. -> 즉, 업데이트가 안됨. 웹 뿐만 아니라, dependencies 등 다른 것들도 업데이트가 안된다.
->또한, mvn은 mvnw 파일로 작동하므로, ls,cd 명령어로 현재 디렉토리 잘 알고 있어야 함.

->이런 에러 나면, 디렉토리 ls 확인해주기!
cf.) ctrl+c로 터미널에서 java -jar 실행 종료 시킬 수 있음.
5.완성!!

->${message} 그대로 나오는 이유는, 해당 에러 설정이 없어서 그럼.(문제 x)


-> dependency management의 장점: pom.xml 파일의 dependencyManagement에서 버전만 잘 기입해주면, 나중에 버전 업그레이드 해도 dependencies들은 dependencyManagement에 의해 자동으로 업데이트 되니 굉장히 편리하다.
-> 마지막 줄 'When you upgrade ~' 이 부분이 위에 해당되는 내용임.

*스냅샷,M버전,RC 버전은 비정식 버전이라고 생각하면 됨. GA가 정식 버전임.
->따라서, GA 버전 외에 비정식 버전은 Maven 중앙 저장소에 올라가지 않으므로, repository를 따로 만들어야 한다.(밑에 사진 참고)


p.s. 잘 생각이 안나서 ㅎㅎ... 다시 정리해봄.



->Maven Plugin은 build를 해주는 역할임. 즉, 실행 가능한 jar 파일을 만들어 주는 것이다.