
작년에 친구가 GDSC에 들어갔다며 자랑했었다. 그렇게 GDSC를 처음 알게 되었다. Google Developer Student Clubs 줄여서 GDSC 라니 멋지다.
올해 처음 우리 학교에 GDSC가 생겨 1기 맴버를 모집한다는 공고를 보고는 바로 지원했다. 프론트와 서버를 고민하다가 프론트는 그래도 혼자 좀 해볼 수 있을 것 같아서 서버에 지원했는데 덜컥 붙었다. (그리고는 이름이 GDG로 바뀌었다. GDG on Campus 라고 바뀐 것 같은데 GDSC가 더 멋진 것 같다. )
스터디는 매주 돌아가며 발표를 하는 형식이다. 나는 발표자료를 벨로그에 적어두면 좋을 것 같아서 이 시리즈를 시작했다. 내가 알게된 내용들을 정리하는 것이라서 정보가 부족하거나 부정확할 수 있다.
스프링 부트의 프로젝트는 어떤 파일들로 구성되어 있을까?
이 글은 Spring Tool Suite 4에서 프로젝트를 만들어보며 실습했다.
프로젝트를 하나 만들어보면 사진과 같이 프로젝트가 생성된다.

프로젝트를 만들면 가장 상위에 프로젝트명의 폴더가 생긴다. 그 폴더 안에 다양한 폴더들이 생긴다.
여기서 주목할 파일은
build.gradie 파일이다. 
이 파일에는 헤더파일처럼 변수와 설정들이 정의되어 있다. 정확한 기능은 모르겠으나, 프로젝트 빌드 시에 이 파일에서 선언한 라이브러리를 자동으로 설치하고 적용해준다. 스프링부트 버전과 개발 언어(자바)에 대한 정보도 들어있다.

프로젝트에서 새로운 라이브러리를 사용하고 싶다면 이 dependencies 스코프 안에 설정을 넣어주고 새로고침 해주면 알아서 적용된다.
자바 파일을 저장하는 공간이다.
들어가보면 프로젝트의 이름을 따온 자파 패키지가 하나 있다.
이 자바 패키지에 매인 클레스가 들어간다. 인터넷 설명에는 스프링부트의 컨트롤러, 폼, DTO, 데이터베이스 처리를 위한 엔티티 등이 들어간다고 한다.

컨트롤러와 lombok 자바 파일과
(프로젝트명)+Application.java 파일이 있다.
이 Application 파일이 프로젝트의 시작 파일이다. 그리고 이 파일에는 모든 c언어 프로젝트에 main 함수가 있듯 반드시 @SpringBootApplication 에너테이션이 있어야 한다.

html, css, javascript 파일이 저장되는 곳이다. templit과 static이 있는데, templit은 자바 파일에 의해서 동적으로 생성하는 html파일을 담고 있고, static은 변하지 않는 css나 js, 이미지 파일 등이 저장된다.
즉 http 요청이 들어왔을 때 던져줄 자원이 들어있는 폴더이다.
여기서 테스트 코드를 작성하고 실행해볼 수 있다고 하는데 아직 사용해본 적은 없다. 사용하고 알게되면 적어두겠다.
.java 파일을 컴파일하면 .class 파일이 나온다. 프로젝트를 실행하기 위해서는 이 class 파일로 컴파일 해야하는데 그 컴파일한 class들을 모아두는 폴더라고 한다. (보통 바이너리 파일(컴파일된 파일이나 실행파일)을 bin 폴더에 저장한다. )

grald는 스프링 프로젝트 빌더라고 한다. 그 빌더에서 결과를 저장하거나 설정을 저장하는 파일이다. 안에 보면 wrapper 라는 폴더가 있는데 wrapping이 외부 라이브러리를 묶어주는..? 과정인 만큼 빌더와 관련있는 폴더가 맞는 것 같다.

마지막으로 src 폴더에는 main과test 폴더가 있는데, 인터넷을 찾아보니 src/main/java, src/test/java 같은 폴더에 대한 이야기만 있다. 이 src에 있는 main과 test가 탐색기 상에서 확장되어서? 보이는 것 같다. 암튼 핵심 소스를 담고 있는 폴더이다.
스프링부트의 프로젝트 파일을 하나하나 살펴보았다. 뭐가 엄청 많아서 어려울 것 같았는데 막상 정리해보니 다 필요하고 쓸모 있는 항목들이라서 이해가 갔다. 앞으로 본격적인 프로젝트를 만들기 전에 프로젝트 폴더의 구성을 알아두면 더 수월하게 개발할 수 있을 것 같다.