JustDoEat
Spring 기본 세팅 및 기본 프로젝트 구조 파악 본문
⚙️ 환경설정
Spring Initializer 를 사용하여 프로젝트를 간편하게 빌드 할 수 있습니다.
현제 JDK21 버전을 사용하고 있고, 거기에 맞춰 스프링부트 버전또한 3.2 를 사용하겠습니다.
높은게 다 좋은 줄 알았는데, 전혀 바보같은 생각이다. 버전이 높은걸 사용해도 내가 사용하려는 무엇가들이 그 버전을 지원을 안 할 확률이 높기때문에 새로나온 버전일수록 잘 알아보고 호환이 되는지 확인해야합니다.
추가적으로 의존성을 설정 하려면 Add Dependenies에서 추가하고 빌드하면 됩니다.
인텔리제이로 생성된 프로젝트를 실행하고.
build.gradle
build.gradle라는 파일에서는 프로젝트 빌드를 위해 필요한 정보들이 있는데,
필요한 의존성, 플러그인 자바 버전 등등을 적어놓고 build.gradle파일에 실행을 누르면 프로젝트가 빌드가 됩니다.
혹여나 메인컨트롤러를 실행하거나 빌드할때 오류가 생길 수 있으니, 프로젝트구조에서 JDK버전을 확인해주고
설정-> Gradle 가서도 JDK 버전이 맞는지 확인해 주면 좋습니다.
(gradle에 JDK버전이 달라서 애먹었습니다 ㅎㅎㅎ.. )
⚙️ 프로젝트 구조
📗 .idea
IntelliJ IDEA 프로젝트 설정을 저장하는 곳입니다. 이 폴더에는 프로젝트의 구성 파일, 모듈 설정, 런타임 환경, 프로젝트의 상태 및 기타 IDE 관련 설정이 포함됩니다.
📗 .gradle
Gradle 빌드 도구가 프로젝트를 빌드할 때 생성되는 캐시 및 임시 파일을 저장하는 곳입니다. 이 폴더는 Gradle 실행에 필요한 다양한 설정과 의존성을 관리하고, 빌드 프로세스의 속도를 향상시키기 위해 사용됩니다.
즉 gradle.build를 실행함으로써 설치되어지는 의존성, 플러그인 등등이 .gradle에 저장이 되어집니다.
(Django로 치면 venv에 의존성이 깔리는 것과 유사하다고 하다고 생각이 든다.)
📗 gradle
Gradle 빌드 도구의 설치와 관련된 파일이 저장되는 디렉토리입니다. 일반적으로 이 폴더에는 다음과 같은 파일이 포함됩니다.
📗 build.gradle
파일은 Gradle 빌드 스크립트입니다. 이 파일은 프로젝트의 빌드 프로세스를 정의하고, 필요한 플러그인 및 의존성을 설정하며, 빌드되는 결과물의 구성을 지정합니다.
📗 src
resource와, java 폴더가 있는데
resource는 정적파일 및 동적파일을 저장하는 부분으로 다시 나누어진다.
java는 테스트코드를 실행 할 test폴더와 프로젝트의 컨트롤러들이 실행 될 패키지들로 구성이 되어있습니다.
📗 외부라이브러리(External Libraries)
이 부분에는 gradle.build를 실행하면서 깔리는 라이브러리들을 보기 편하게 제공해주는 폴더이고
이 폴더는 프로젝트 구조에 직접적으로 포함이 되어있지 않고 IDE(InteliJ,Pycharm 등)가 사용자의 편의를 위해 만들어주는 폴더이다.
gradle.build를 실행하면서 깔리는 라이브러리는 .gradle에 위치해있고, 이걸 인식해서 편하게 보여준다라고 생각하면 편할것같다.
📚 동적템플릿과 정적템플릿이란?
위에서 간략하게 프로젝트 구조를 설명하면서 resource라는 부분이 있었는데, 추가적으로 설명하면서 개념정리를 해보려고 합니다.
📗 static
정적 파일들을 저장하는 곳이고. 정적 파일이란 이미지, CSS, JavaScript 등과 같이 서버에서 변경되지 않고 클라이언트에게 그대로 전달되는 파일을 의미합니다. 클라이언트가 해당 파일을 요청하면 서버는 그 파일을 그대로 전송하여 클라이언트에게 보여줍니다. 예를 들어, 웹 페이지의 배경 이미지, 아이콘, 스타일 시트 등이 정적 파일에 해당합니다.
📗 templates
동적파일들을 저장하는 곳이고. 동적파일이라 하면 클라이언트의 요청에따라 파일 구조가 바뀔 수 있는파일을 이야기 하는데. 예를 들어 웹페이지의 내용이 데이터 베이스에서 가지고 와야하는 정보를 포함한다면 데이터 베이스의 어떤 정보가 올지모른다 이러한 이유로 정적파일을 이용하여 미리 만들어놓을 수 없기 떄문에 이런 경우 동적파일을 사용하는것이다.
📚 External Libraries
프로젝트 구조에서 설명은 하였지만, 내가 기록하고싶은건 의존성을 설치할때 분명 2개밖에 설치를 안하였는데 나도 모르는 여러가지가 생성이 되었다는건데.
결론으로는
Spring Boot 프로젝트에서 Gradle을 사용하면, Gradle이 의존성 관리를 담당하여 스프링 부트 애플리케이션을 빌드하고 의존하는 라이브러리들을 쉽게 관리할 수 있는데, 내가 A 라는 라이브러리를 설치 했을때 이 A가 돌아가기 위해 B라는 라이브러리를 추가로 설치를 헤야하는 상황이 발생을 하였을때 사용자가 직접 추가하는것이 아니라 자동적으로 B라는 라이브러리를 설치를 자동적으로 설치를 해주기때문에 편하다😀.