안녕하세요!
이젠 조금 더 실전으로 나가볼까 합니다.
바로 스프링 부트 프로젝트를 만드는 날입니다!!
(드디어 실전!!)
프레임워크는 똑똑한 사람들이 만들어놓은 프로젝트 틀이 있다고 했잖아요?
그래서 우리는 해당 틀에 맞는 프로젝트를 만들어 볼 예정입니다.
👉이전 글 보러가기
Spring Initializr 접속하기
스프링 부트 프레임워크는 다른 프레임워크와는 조금 다르게 특이한 방식으로 프로젝트를 구성할 수 있습니다.
바로… 웹 사이트 안에서!! 만들 수 있는데요!
주로 프레임워크들이 터미널이나 IDE의 기능을 써서 구성되는 경우가 많은데 웹 사이트 안에서 프로젝트를 만들 수 있어서 훨씬 간편한 것 같습니다.
스프링 부트 프로젝트를 만들 수 있는 사이트 이름은 Spring Initializr입니다. 바로 접속해봅시다! 아래 화면을 클릭해주세요
↓ ↓ ↓ ↓ ↓
위 사진을 눌러 Spring initializr로 들어가봅시다
아마 위 화면과 같은 웹 사이트로 들어가게 되었을 것입니다.
주소는 https://start.spring.io 입니다.
프로젝트 구경하기
프로젝트를 생성하기 전 우리가 이 상태로 프로젝트를 생성하게 되면 어떻게 구성이 될 지 미리 구경해봅시다.
제일 아래의 가운데에 EXPLORE를 눌러봅시다.
(요기)
(EXPLORE 화면)
우리가 프로젝트를 다운로드하게 되면 위와 같은 내용과 구성으로 다운로드가 될 것입니다.
프로젝트 설정 파일 선택
일단 아래의 CLOSE 버튼을 눌러 다시 메인 화면으로 돌아와주세요.
먼저 우리가 살펴볼 곳은 왼쪽 위에 있는 Project 부분입니다.
Project는 현재 Gradle과 Maven 두 종류로 나뉘어져 있습니다. 이는 우리의 스프링 부트 프로그램의 설정 방식이라고 생각하시면 됩니다.
그리고 Gradle은 Groovy와 Kotlin이라는 언어 중 선택해서 구성할 수 있습니다.
먼저 Gradle과 Maven의 차이점을 보여드리겠습니다.
확인하는 방법은 각각 선택한 후 EXPLORE를 눌러 설정파일의 구성을 확인하면 됩니다.
(Gradle - Groovy 선택 시 설정 화면)
(Maven 선택 시 설정 화면)
차이점으론 Gradle은 gradle폴더가, Maven은 mvn 폴더가 생기게 됩니다.
그리고 Gradle은 build.gradle, Mavern은 pom.xml이라는 설정 파일이 생깁니다.
그리고 큰 차이점! 오른쪽에 설정 파일을 보시면 코드 작성 방식이 아예 다르다는게 보이실겁니다.
Maven은 xml이라는 형식으로 프로젝트 설정 파일을 구성합니다. 이 방식은 Spring 초기에 사용한 방식이고, 코딩 언어가 아닌 마크업 언어라 설정 파일 자체도 원래 사용하던 프로그래밍 언어의 문법대로 하고 싶다는 요구가 생겼습니다.
그래서 이후 생겨난 것이 Gradle 방식입니다. 중괄호를 쓰고 함수같은 모양도 나오는것이 평소 우리가 사용하는 프로그래밍 언어와 비슷합니다. Groovy라는 언어 문법을 이용해 설정할 수 있게 만들어졌고, 후에 Kotlin이라는 언어가 나오면서 kotlin 문법대로 설정할 수 있게도 추가되었습니다.
사실 groovy가 java랑 거의 다른게 없어서.. 특별한 다른 언어가 있다라기 보단 java랑 비슷하다고 생각하시면 됩니다.
📖더 알아보기
XML - 위키백과
그럼 Gradle 방식 안에서 Groovy와 Kotlin 설정의 차이도 알아보겠습니다.
(Gradle - Groovy 선택 시 설정 화면)
(Gradle - Kotlin 선택 시 설정 화면)
큰 변화는 없고 build.gradle, settings.gradle과 같이 확장자가 gradle인 파일 옆에 .kts가 추가적으로 붙었습니다. 이 확장자가 바로 kotlin파일의 확장자입니다.
그리고 오른쪽 코드에 작은 몇몇곳에서 문법적인 차이가 있습니다. 해당 문법은 kotlin의 문법을 따른 것이라 프로젝트 구성 자체를 kotlin으로 하게 될 때 사용성이 증가할 것입니다.
요약하자면 자동 빌드 시스템인 Maven에서 프로그래밍 언어 문법으로 작성 방식을 변경한 것이 Gradle이고,
Gradle은 애초에 Groovy라는 언어 기반이지만 Kotlin 언어 기반으로도 추가되어서 선택이 가능
우리는 Java를 이용한 프로젝트를 구성할 것이기 때문에 Gradle - Groovy를 선택하도록 하겠습니다.
프로젝트 언어와 스프링 버전
음… 이 부분은 길게 설명할 게 없습니다. 앞에서 Kotlin과 Groovy 언어에 대한 설명을 해서 넘어가고 우리가 프로그램을 구현하면서 사용할 언어를 선택하면 됩니다.
저희는 Java를 선택하겠습니다.
지금 글 작성중인 현재 스프링 부트의 버전은 위와 같이 나오고 있습니다.
크게 버전의 제일 앞 숫자인 3.X버전과 2.X버전으로 나뉘고, Spring initializr 버전은 시간이 지나면서 구성이 달라질 수 있습니다.
Spring Boot 3버전과 2버전의 차이
Spring Boot 3버전은 JAVA 17버전 이상이어야 합니다.
그보다 아래의 JAVA 버전을 사용하고 싶으시다면 Spring Boot 2버전을 사용하시면 됩니다.
(SNAPSHOT)이나 (M2)가 뒤에 붙은 버전들이 보이실 것입니다.
해당 버전은 정식 릴리즈되지 않은 버전으로, 불안정할 수 있기 때문에 위 사진대로라면 Spring Boot 2버전을 사용하고 싶으시면 2.7.10, 3버전을 사용하고 싶으시면 3.0.5를 고르시면 됩니다.
물론 시간이 지나면서 버전의 구성은 달라집니다!
각자의 JAVA 버전에 맞춰 Spring Boot 버전을 고르시면 되겠습니다. 저는 3버전을 고르겠습니다.
프로젝트 메타데이터 설정
항목이 많아 각각 설명드리겠습니다.
1. Group
위에 프로그래밍을 진행하게 될 폴더인 src폴더가 있다고 했죠? 그 src 폴더 안에 1차적으로 파일들을 묶어줄 폴더 구성입니다.
점 기준으로 폴더가 부모 자식 관계로 생성이 되고, 주로 회사의 도메인을 많이 사용한다고 합니다.
만약 우리가 네이버의 프로그램을 개발하게 된다면 com.naver를 넣어주면 되겠죠? 그리고 EXPLORE를 눌러 src폴더 안을 확인해봅시다.
main폴더와 test가 아직 뭔진 몰라도 그 안에 각각 com과 naver 폴더가 생성된 것을 볼 수 있습니다.
2. Artifact
위 사진에서 demo란 폴더 보이시죠? 저 폴더처럼 어플리케이션 바로 상위에 있는 폴더명을 지정하게 됩니다.
쇼핑할 수 있는 프로그램을 구성해봅시다. shopping이라고 한번 지정해볼까요?
Artifact는 특이하게 Artifact에서 지정한 대로 Name에도 같은 값이 들어갑니다.
EXPLORE를 통해 파일 구성을 확인해봅시다.
demo에서 shopping으로 변경된것을 볼 수 있습니다.
3. Name
위에 사진을 보고 눈치채셨을 수 있지만 Name은 어플리케이션 이름을 변경해줍니다.
위에 Artifact를 변경했을 때 Name이 shopping으로 같이 바뀌어서 DemoApplication.java가 ShoppingApplication.java로 변경된 것을 보실 수 있습니다.
혹여나 Artifact와 다른 어플리케이션 이름을 사용하고 싶으시다면 Artifact를 지정한 다음에 Name을 변경해주시면 됩니다.
Name을 superShopping으로 변경해볼까요?
shopping 폴더 안에 application 이름만 변경된 것을 보실 수 있습니다.
우리는 Artifact와 같은 어플리케이션명을 사용할 것이기 때문에 다시 Name을 shopping으로 변경하겠습니다.
4. Description
프로젝트의 설명을 쓰는곳입니다. 딱히 특별한건 없습니다.
Shopping program created by Naver Corp. 이라고 넣어보겠습니다.
5. Package name
Group과 Artifact의 값을 통해 자동으로 지정되는 패키지 경로입니다.
대체로 Group과 Artifact의 값을 그대로 따르니 따로 건들것은 없습니다.
6. Packaging
프로그램 배포 파일 형식을 선택하는 곳입니다.
Jar형식과 War형식이 있으며 JAR와 WAR의 차이점은 압축 범위와 배포 환경에 있습니다.
JAR는 라이브러리나 자바 애플리케이션을 배포할 때 사용하고, WAR는 웹 애플리케이션을 배포할 때 사용합니다.
WAR는 JAR를 포함하고 있으며, 웹 서버나 웹 컨테이너가 필요합니다 .
Spring Boot에서는 별도의 웹 서버가 없이도 Spring Boot 자체가 웹서버를 포함하니 Jar방식의 배포 방식을 추천합니다.
저는 Jar를 선택하겠습니다.
7. Java
자바 버전을 선택하는 곳입니다.
본인이 설치한 자바의 버전을 선택하시면 됩니다.
저는 17버전을 선택하겠습니다.
(결과)
이렇게 설정이 되었으면 잘 진행된 것입니다.
모듈 추가하기
이제 마지막으로 이 Dependencies 부분이 남았습니다.
여기는 우리의 프로젝트에 이미 만들어져있는 여러 모듈들을 추가할 수 있는 곳입니다.
ADD DEPENDENCIES를 눌러볼까요?
이런 팝업창이 나오게 됩니다. 이 중 저희는 저희가 쓸 모듈들을 골라서 추가해주시면 됩니다.
Spring Web이라는 걸 추가해볼까요? 이 모듈은 우리의 Spring Boot 프로젝트를 웹 프로젝트로 만들어줍니다.
위와같이 메인 화면에 Spring Web이 Dependencies쪽에 추가되었습니다.
EXPLORE도 확인해보겠습니다.
빨간색 네모로 된 부분들이 자동으로 변경되었습니다.
오른쪽의 dependencies {} 부분 안에 저희가 설정하는 모듈들이 들어가게 됩니다. 그래서 spring-boot-starter-web으로 추가된 것을 보실 수 있습니다.
왼쪽의 static과 templates폴더는 나중에 설명드리도록 하겠습니다. 지금은 Spring Web을 추가했더니 해당 폴더들이 생겼다만 알아주시면 됩니다.
하나만 더 추가해보겠습니다.
ADD DEPENDENCIES를 눌러서 Lombok이란 것을 찾아서 추가해보겠습니다.
Lombok이란 모듈이 무엇인지는 다음글에 이어서 알려드리겠습니다.
Lombok을 추가한 후의 EXPLORE를 볼까요?
빨간 네모 부분이 build.gradle 파일에 추가됐습니다.
이처럼 해당 모듈을 사용하고 싶을 때 추가하거나 변경해야 할 구성을 알아서 전부 해 주니 엄청 편하겠죠? 물론 프로젝트를 전부 구성한 뒤에 직접 추가하는것도 가능합니다.
프로젝트 파일 생성하기
드디어 구성이 다 끝났습니다!
이제 프로젝트 파일을 생성해서 내려받아봅시다.
메인화면 제일 아래에 GENERATE 버튼을 클릭하게 되면 저희가 메타데이터에서 설정한 artifact의 이름으로 된 압축파일 하나를 다운로드받게 되실겁니다.
원하는 경로에 다운받아주세요!
그럼 저희의 스프링 부트 프로젝트를 놔두고 싶은 경로에 해당 압축파일을 압축해제해주세요.
그럼 모든 준비가 끝났습니다!
다음으로는 IDE중 유명한 IntelliJ를 설치해보고 이 프로젝트 폴더를 IntelliJ로 열어봅시다.
(위에서 설명한 Kotlin언어를 만든 JetBrain사의 IDE)
또한 가볍게 Hello World를 Spring Web의 기능을 이용하여 찍어보도록 하겠습니다.
그럼 다음시간에 봐용~~