이 글은 인프런에 있는 김영한님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의를 듣고 정리한 필기입니다.
⛅️ 필요한 환경 설정
1. Java 11 혹은 그 이상 버전.
2. IDE (IntelliJ IDEA) 설치.
⛅️ Spring 프로젝트 생성
위 사이트를 통해서 Spring 프로젝트 생성이 가능하다.
spring에서 운영하고 있는 사이트이며, spring boot 기반의 프로젝트를 생성해준다.
설정을 살펴보자.
[Project 종류]
Maven과 Gradle 프로젝트로 나뉘어져 있는데, 이것들은 무엇일까?
필요한 라이브러리를 가져와주고, 빌드하는 life cycle까지 모두 관리해주는 툴이다.
과거엔 Maven을 많이 사용했지만 요즘에는 Gradle을 많이 사용한다. 우리 프로젝트에서는 Gradle을 선택한다.
[Language]
말 그대로 사용할 언어의 종류를 선택하는 란이다.
우리는 Java를 사용할 것이기 때문에 Java를 선택한다.
[Spring Boot]
사용할 spring boot의 버전을 선택하는 란이다.
SHAPSHOT과 M1은 아직 개발하고 있는 버전이므로 선택할 때엔 아무것도 써져있지 않은 버전 중 제일 높은 버전을 선택하면 된다.
[Project Metadata]
Group: 보통 기업명 혹은 도메인을 넣는다.
Artifact: 빌드된 결과물. 원하는 이름을 적으면 된다.
[Dependencies]
spring boot에서 어떤 라이브러리를 가져와서 사용할 것인지 선택하는 곳이다.
오른쪽 상단의 ADD DEPENDENCIES를 누르고 우리가 사용하길 원하는 라이브러리를 추가하면 된다.
이번 시간에는 웹 관련 프로젝트를 만들 것이기 때문에 먼저 "Spring Web"을 추가한다.
또한 웹은 html을 사용하는데, html을 만들어주는 template engine인 "Thymeleaf"를 추가한다.
여기까지 했으면 하단의 Generate 버튼을 누르면 zip파일을 하나 다운받게 된다.
이를 다운받고, 압축 풀기를 해준다.
⛅️ IntelliJ IDEA에서 프로젝트 열기
IntelliJ에서 Import Project 혹은 Open을 누른 후, 위에서 압축을 풀었던 폴더 안에 있는 "build.gradle"을 선택하면 intelliJ에서 프로젝트를 연다.
처음 프로젝트를 열 때에는 외부에서 라이브러리들을 다운받기 때문에 네트워크에 연결되어 있어야 한다!
강사님은 에러가 나지 않았지만, 나는 여기서 에러가 났다.
Android sdk에러가 났는데 https://enumclass.tistory.com/157
이 블로그를 보니 gradle 버전이 7 이상이면 오류가 나는 듯 했다. 위 블로그를 보고 gradle 버전을 6.9로 낮췄더니 해결이 됐다.
프로젝트를 성공적으로 불러왔으면 Project창에 이런 식으로 파일이 있는 것을 볼 수 있다.
먼저 눈 여겨 볼 것은 src폴더인데, main 폴더 밑에 java와 resources로 나누어져 있는 것을 알 수 있다.
java 폴더에는 실제 package와 소스 파일들이 있고, resources는 실제 java 코드를 제외한 xml, properties, 설정 파일, html등이 들어가게 된다.
build.gradle를 열어보자. build.gradle를 열어보면 spring boot에 필요한 설정이 써져 있다.
gradle은 우선 간단하게 버전을 설정하고 라이브러리를 불러오는 역할을 한다고 알면 된다. 이 파일에 써져 있는 내용이 무슨 뜻인가 한 번 알아보자.
sourceCompatibility = '11' -> java 11버전을 사용하고 있음을 뜻함.
dependencies -> start.spring.io에서 추가했던 라이브러리들이 추가되어 있음을 알 수 있다.
repositories의 mavenCentral() -> 우리가 추가했던 라이브러리를 다운 받는 곳 명시. mavenCentral이라는 공개된 사이트가 있는데, 그 곳에서 다운로드받으라고 명시한 것이다.
gradlew와 gradlebat은 gradle 빌드할 때에 사용한다.
⛅️ Build 해보기
intelliJ로 직접 빌드해보자.
java 폴더 밑에 있는 클래스를 열어보면 public static void main(String[] args) 함수가 있는 것을 알 수 있다.
java는 이 main 메서드에서 프로그램이 시작된다.
코드를 건드리지 않은 상태에서 바로 run을 해보자.
콘솔 내용을 보면 "Tomcat initialized with port(s): 8080 (http)" 라고 써져있는 것을 볼 수 있다.
run한 상태에서 localhost:8080으로 접속하면
위와 같은 화면이 뜨게 되는데, 이렇게 뜨면 프로젝트 환경 설정에 성공한 것이다.
이게 어떻게 가능한걸까?
간단히 설명하자면 java의 main 메서드를 보자.
@SpringBootApplication
public class PracticeSpringApplication {
public static void main(String[] args) {
SpringApplication.run(PracticeSpringApplication.class, args);
}
}
main 메서드를 실행하면, Spring.Application.run()에 현재 클래스를 매개변수로 전달하고, Spring boot 어플리케이션이 실행된다.
Spring boot는 내부적으로 tomcat이라는 웹 서버를 내장하고 있는데, main 메서드를 실행하면 spring에서 자체적으로 tomcat 서버를 실행하면서 spring boot가 실행된다!
⛅️ 번외 - intelliJ 설정
intelliJ가 자체적으로 실행되는 것이 아니라 gradle을 통해서 실행될 때가 있다.
intelliJ에서 설정을 변경하면 gradle을 통하지 않고 빌드하게 할 수 있다.
Settings - Build, Execution, Deployment - Gradle로 들어가면 Build and run using 항목과 Run test using 항목이 있다.
이 두 항목을 모두 IntelliJ IDEA로 변경하면 gradle을 거치지 않기 때문에 더 빠르다.
다음 시간에는 어떤 라이브러리들이 사용되는지 알아보도록 하자.