스프링 프레임워크를 이용한 게시판을 만들기 위해 많은 구글링을 하면서 느낀점은
개발 도구들의 발전이 빠르고 사람마다 사용하는 개발 환경이 다르기 때문에 같은 코드를 작성해도 에러가 발생 하거나 생김새가 조금씩 달라서 어떻게 사용해야 할지 모르는 상황을 많이 겪었다.
따라서 최대한 최신버전과 공식문서를 활용하고 내가 생각하는 최적환경의 스프링 프로젝트를 만들기위한 방법을 기록하려고 한다.
2022-11-16 기준
MacOS 사용 (Monterey)
Mac 에서 파일을 관리하는 homebrew 를 통해 다운로드 해서 사용했다
homebrew에서 받을 경우 최신버전을 기준으로 자동으로 다운해서 관리한다.
테무린 자바 17을 선택한 이유는 https://whichjdk.com/ 를 참고하여 선택했다.
https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/ 를 참고 한 다음 실제로 프로젝트를 만들때는 인텔리제이를 통해 만들었다.
Ant와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스로 공개된 빌드 도구
구글링을 하다보면 Maven으로 만드는 경우도 많지만 Gradle이 더 좋다고 해서 선택했다.
배포를 하기 위해 사용할 클라우드서버다.
처음엔 스프링으로만 사용해서 프로젝트를 만들면서 .xml 파일과 build.gradle 파일 context 컨테이너 등 하나하나 넣어주어야 하는 코드들이 굉장히 많았다.
그만큼 프로젝트를 생성하고 세팅하는게 코드를 짜는것만큼 어려웠고 스프링부트와 인텔리제이가 이를 도와주면서 조금이나마 쉽게 만들 수 있었다. 하지만 정확한 방법이 나와있는 정보를 찾지 못했다.(정확하게는 나의 개발환경에서 똑같이 프로젝트를 만든 방법을 찾을 수 없었다.)
따라서 직접 삽질하면서 나만의 방법으로 만들었다.
위에 있는 개발도구들을 준비하고 어느정도 도구에 대한 이해를 했다면 인텔리제이를 켜고 new project를 해보자

첫번째 이미지의 Server URL을 눌러보면 스프링 프로젝트를 구성해주는 사이트로 연결되는데 어떤 글에서는 인텔리제이 커뮤니티버전(무료버전) 을 쓴다고 하면 인텔리제이에서 스프링을 구성해주지 않기 때문에 해당 사이트에서 만들어서 사용한다고 한다. 무료버전을 쓰더라도 https://start.spring.io/ 를 잘 사용하면 될것 같다. 사용방법이나 구성이 해당 링크와 거의 똑같기 때문에 조금만 들여다보면 알 수 있을 것이다.

두번째 이미지에서 dependencies를 선택하면 자동으로 build.gradle 파일에 추가를 해주는데
예전에는 직접 검색해서 추가했지만 편리한 기능이 있으므로 사용할 것이다. 우선 필수라고 생각된 세가지를 선택했고 어떤 글에선 Spring Web Services 를 추가하는 경우도 있었는데 Spring Web와 Spring Web Services 의 차이점을 간단하게 설명하면
Spring Web -> RESTful 기반의 웹 서비스를 제공
Spring Web Service -> SOAP 기반의 웹 서비스를 제공

더 자세히 알아보고 싶다면 구글링을 해보자
나는 신기술충이라 더 좋다고 하는걸 쓰는 경향이 있어서 REST(Spring Web) 를 쓸것이다.
Brew 를 통해 Gradle을 다운받으면 Gradle의 홈경로는 Brew 아래로 들어간다 나같은 경우엔
/opt/homebrew/Cellar/gradle 경로에 저장 되어 있다.
인텔리제이에서 프로젝트를 만들때 Gradle을 선택했기 때문에 내가 받은 brew경로의 Gradle과 연결시켜 줘야 할줄 알았다.
그러나 인텔리제이는 Gradle의 홈경로를 인식할 때 brew 경로의 Gradle을 찾지 않는다
그래서 내가 처음 프로젝트를 만들때 인텔리제이는 내 홈 경로에 .gradle라는 새로운 폴더를 생성하고 그안에다 gradle을 자동으로 다운받아 연결시켜서 프로젝트를 생성한다.
이 상황이 매우 불편해서 구글링을 해본 결과 나와 같은 문제를 겪는 사람들이 있었고 해결방안을 간단히 요약하면
홈 디렉토리에 있는 .bash_profile 에다가 내가 받은 brew gradle의 경로를 홈경로로 인식하는 방법을 사용해 해결했다.
gradle의 버전이 업데이트 되어 바뀌어도 brew 경로를 gradle의 홈경로라고 인식 할 수 있다고 하는데 검증까진 하지 못했다.
나는 .bash_profile 을 수정하고 터미널에서 source .bash_profile 입력해서 저장하고 홈경로에 있는
.gradle(인텔리제이가 자동으로 받은 gradle) 을 삭제한후 다시 프로젝트를 처음부터 만들었다.
그리고 인텔리제이의 preferences -> build,Execution -> build Tools -> Gradle 를 확인해보면

경로가 brew안의 gradle 경로로 바뀐것을 확인 했다.

처음에 만든 프로젝트의 gradle 은 이렇게 홈디렉토리의 .gradle로 자동생성되어 있는걸 볼수 있다.
나는 gradle의 홈경로를 위 방법으로 바꾼 후에 .gradle 파일(인텔리제이가 처음에 만든 gradle)을 삭제했고 인텔리제이에서 프로젝트를 생성해서 내가받은 gradle을 인식하는걸 확인했다. (원래라면 자동으로 .gradle을 만들텐데 만들지 않았다 너무 기뻣다.)
아래에 build and run using 과 run tests using 도 gradle에서 인텔리제이로 바꿧는데 이유는 default 값인 gradle을 사용하면 코드를 테스트 할 때 콘솔창에 내용이 길게 나온다 인텔리제이로 바꾸면 콘솔창에는 내가 확인하려고 입력한 로그라던지 특정 값들만 짧게 출력이 된다. 나는 코드를 테스트할때 인텔리제이가 가독성이 좋다고 느꼇기 때문에 설정했다.
다음으로