스프링 부트 스타터 사이트에서 스프링 프로젝트 생성
https://start.spring.io/
Project
Maven Project, Gradle Project 선택.
요즘은 Maven에서 Gradle로 넘어가는 추세라고 한다.
Spring Boot
SpringBoot 버전 선택.
Snapshot, M3같은 미정식 버전을 제외하고 최신 버전 선택함.
SnapShot: 거의 매일 찍어내는 버전. 데일리 빌드 버전
M(Milestone): 팀이나 프로젝트에서 정해진 주기마다 배포하는 버전. M3 이면 Milestone 3번째 것.
Project Metadata
Group: 보통 기업 도메인명
Artifact: build되어 나온 결과물(jar, war) 이름
Defendencies
프로젝트에서 사용할 라이브러리 선택
다 선택 후, Generate를 클릭하면 생성된 프로젝트가 다운로드된다.
IntelliJ나 Eclipse에서 생성된 프로젝트를 Open하면 된다.
build.gradle에 보면 dependencies에 스프링 스타터에서 선택한 Spring Web, Thymeleaf, Dev Tools가 들어온 걸 알 수 있다.
SpringBoot에 JUnit을 이용한 Test 라이브러리는 기본적으로 들어가있다.(spring-boot-strater-test)
repositories는 라이브러리를 다운받아올 저장소를 의미한다.
mavenCentral()은 공개적으로 라이브러리를 다운받을 수 있는 저장소에서 다운받게 해준다.
추가로 다른 저장소와 연결하고 싶다면 repositories에서 설정을 추가해주면 된다.
Build하면 build.gradle에 따라 External Libraries로 라이브러라기 다운로드된다.
의존관계에 있는 라이브러리들도 자동으로 다운받아진다.
라이브러리 간의 의존관계는 위 사진처럼 Gradle의 Dependencies에서 확인할 수 있다.
ex) spring-boot-starter-web를 동작시키기 위해 필요한
spring-boot-starter-json, spring-boot-starter-tomcat, spring-webmvc.
spring-boot-starter-tomcat을 위해 필요한 spring-boot-starter, spring-web.
(*)는 중복된 라이브러리라는 의미. 더블 클릭하면 제일 먼저 기술된 라이브러리로 이동한다.
폴더 구조를 보면 기본적으로 아래처럼 되어있다. Test는 기본으로 넣어줄만큼 Test 작성이 중요하다.
main
-- java: 웹 Java 소스
-- resources: html, js, css, image 파일 등의 resources
test
-- java: Test를 위한 Java 소스
File -> Settings 에 들어간다.(윈도우 단축키: Ctrl+Alt+S)
위 사진처럼 IntelliJ IDEA로 바꿔주면 gradle로 build하지 않고 바로 IntelliJ로 실행시켜서 더 빠르게 웹 프로젝트를 작동시킬 수 있다.
예전에는 서버에 WAS(Tomcat)을 직접 설치하고, 프로젝트 파일을 WAS에 밀이 넣어 실행시켰다.
따라서 WAS랑 개발 라이브러리가 완전 분리되어 있었고 불편했다.
SpringBoot는 라이브러리에서 WAS를 가지고 있어, 따로 WAS를 설치해줄 필요가 없다.
WAS 설치나 설정 필요없이 Main Method만 실행시키면 내장된 웹 서버에 웹 프로젝트가 올라가서 실행된다.
SpringBoot가 제공하는 Welcome Page 기능.
resources/static/index.html 로 html파일을 생성하면된다.
localhost:8080으로 들어가면 Welcome Page로 설정한 index.html이 뜬다.
Contoller 클래스
참고로 IntelliJ Enterprise는 Ctrl 누르고 return의 "hello"를 누르면 해당 html로 이동한다.
Spring Start에서 프로젝트 생성할 때, DevTools를 선택하거나 build.gradle에 DevTools 추가.
작동하는 웹 프로젝트를 중단할 필요없이, build>Rebuild Project 누르면 변경사항이 바로 반영된다.
콘솔로 이동
1. ./gradlew build
2. cd build/libs
3. java -jar hello-spring-0.0.1-SNAPSHOT.jar
gardlew는 Gradle이 설치되지 않은 환경 혹은 버전이 다른 상황에서도 해당 프로젝트에 한해서 Gradle을 쓸 수 있도록 지원하는 Wrapper 파일이다. 배포 시 서버에 Gradle을 별도로 설치할 필요 없이 gradlew로 Build, Test 등 Gradle Task를 수행할 수 있다.