얼티밋 버전과 달리 인텔리제이 커뮤니티 버전은 스프링 프로젝트 자동 생성을 지원하지 않으므로, https://start.spring.io/ 사이트에 들어가서 스프링 프로젝트를 다운받도록 합니다.
프로젝트 설정은 먼저 Gradle Project로 하고 개발언어는 Java, Spring Boot버전은 2022년 10월 기준으로 정식버전이며 가장 최신인 2.7.4버전으로 합니다.
Group명은 com.study로, Artifact과 Name은 Ex01FirstApp으로, Description은 필요없으므로 내용을 지우고, Packaging Name은 com.study.springboot로 하도록 합니다. Artifact나 Name을 입력하면 자동으로 Packaging Name이 바뀌므로, 다시 com.study.springboot로 설정해 줘야 됩니다. 이 책에서는 Packaging Name을 com.study.springboot로 통일하도록 하겠습니다. 이유는 소스 복사시 패키지이름을 동일하게 맞추기 위해서 입니다. 자바버전은 앞에서 설치한 17버전으로 설정합니다. 각각 대소문자를 정확히 기입하여 책의 내용과 달라서 생기는 오류가 없도록 해주세요.

스프링 및 스프링부트를 처음 접하는 독자는 갑자기 어려운 용어들이 갑자가 나와서 당황할 수도 있겠습니다. 간단히 설명을 드리겠습니다.
메이븐(Maven) vs 그레이들(Gradle) : 메이븐과 그레이들 모두 자바언어의 빌드 자동화 도구로서 전통적으로 메이븐이 더 일찍 사용되어 왔습니다. 메이븐은 주로 XML 파일 기반의 환경설정을 합니다. 그레이들은 좀더 최근에 사용된 방식으로 그루비(Groovy)언어 기반의 .gradle파일을 통한 간결한 설정을 할 수 있습니다.
그룹(Group) : 여러 프로젝트의 집합으로 보면 됩니다.
아티팩트(Artifact) : 현재 프로젝트의 이름으로 생각하면 됩니다.
패키징 네임(Packaging Name) : 일종의 애플리케이션 아이디(id)역할을 하는 문구로서 자바에서는 폴더 구조로 설정됩니다. com.study.springboot 이런식으로 구성되어 점(.)으로 구분된 첫마디는 주로 회사나 기관을 뜻하는 com, org 등의 문구가 들어가고, 가운데 문구는 주로 회사이름이나 기관이름인 koreaCompany, koreaUniv 등의 문구가, 맨마지막 문구는 애플리케이션의 이름이 들어갑니다. 하지만 이 책에서는 이전 예제의 소스를 다른 예제로 복사할 때, 패키징 이름이 달라지면 컴파일 오류가 발생할 수 있으므로, 모든 예제에 동일하게 com.study.springboot으로 통일하도록 합니다.
Jar vs War : 실행 및 배포 파일을 만드는 것을 패키징(Packaging)이라고 하는데, 전통적인 Jar 방식과 웹 실행환경정보를 담은 War 방식이 있습니다. 필자는 Jar방식으로 단독 실행파일 형식으로 배포하고자 하므로, 웹 실행환경정보는 필요하지 않아서 Jar로 선택했습니다.
이제 오른쪽 상단에 있는 ADD DEPENDENCIES를 눌러 추가 라이브러리를 선언해보겠습니다.

web라고 검색하여 Spring Web을, devtools라고 검색하여 Spring Boot Dev Tools를 추가합니다. Spring Web은 스프링 프로젝트에서 기본적인 웹 애플리케이션을 만들때 사용하는 라이브러리이고, Dev Tools는 소스파일의 변화를 감지하여 자동으로 빌드해 주는 라이브러리입니다.
생성(GENERATE) 버튼을 클릭하여 다운로드 폴더에 zip파일을 다운로드 합니다.

디펜던시(Dependencies) : 의존성이라는 뜻으로 추가적으로 설치되는 라이브러리 파일을 의미합니다. 의존성이라고 명명한 것은 라이브러리 간에 버전에 대한 의존성이 심하여 자동으로 맞춰 주는 게 필요하기 때문입니다.