[강좌] 스프링 입문 - Ch 1. 프로젝트 환경설정 (1)

콜드펌킨·2020년 8월 5일
1

프로젝트 생성

시작은 역시 프로젝트 생성이다. 스프링 부트 프로젝트는 Spring Initializr 라는 사이트에서 아주 쉽고 편리하게 생성할 수 있다. 한 번 들어가보자. Eclipse나 IntelliJ가 아닌 웹 사이트에서 프로젝트를 생성한다는게 뭔가 새롭고 힙한 느낌이다. 심지어 이 사이트는 우측 상단에서 볼 수 있듯이 다크 모드도 지원한다.

사이트에 들어가면 위와 같이 몇 가지 선택할 옵션들이 나온다. 하나씩 살펴보자.

1. Maven vs Gradle
가장 먼저 빌드 툴을 선택한다. MavenGradle 모두 프로젝트에서 사용할 수많은 라이브러리들을 관리해주고 빌드를 도와주는 도구들이다. 아직 개인 프로젝트를 진행할 때 Maven만 사용해봤는데, 최근 현업에서는 대부분 Gradle로 넘어가는 추세라고 한다. 아직은 Maven에 비해 Gradle이 갖는 장점을 확실히 알지는 못하지만, 더 최근에 나온 기술인 만큼 성능 차이는 분명히 존재할 거라고 생각한다. 현업에서도 이젠 대세가 되었다고 하니, 추후 Gradle에 철저히 한 번 공부해봐야겠다. 실무에서 사용하는 스프링 기술에 초점을 맞춘 강좌이니, 여기서는 Gradle을 선택한다.

2. Spring Boot 버전
여러 Spring Boot 버전 중 하나를 선택한다. 괄호 안의 (SNAPSHOT), (M1) 은 아직 정식으로 릴리즈된 버전이 아님을 뜻한다. (SNAPSHOT)은 해당 버전을 정식으로 릴리즈하기 전까지의 최신 상태를 본떠 둔 상태로, 현재 지속적으로 업데이트가 진행 중이라는 것을 의미한다. (M1)은 'MileStone 1'의 약자로, 주요 기능들이 완성되자마자 테스트용으로 공개한 버전을 의미한다. 현재 시점에서 정식으로 릴리즈된 버전 중 가장 최신은 2.3.2 버전이므로 2.3.2를 선택한다.

3. Project Metadata

  • Group
    보통 기업 도메인 명을 넣는다.
  • Artifact
    프로젝트 명을 적어준다.
  • 나머지 Name, Description, Package name, Packaging, Java 등은 편의상 Artifact를 넣으면 정해주는 디폴트 값 그대로 진행한다.

4. Dependencies
스프링 부트 프로젝트를 시작하면서 처음에 어떤 라이브러리를 가져와 쓸 건지 정하는 부분이다. ADD DEPENDENCIES를 클릭한 후 Spring WebThymeleaf를 검색해 추가한다. Spring WEB은 Spring MVC 기반 웹 프로젝트를 만들기 위해 필요한 각종 의존성들을 셋팅해주는 역할을, Thymeleaf는 자바 서버 사이드 템플릿 엔진으로서 화면을 렌더링하는 역할을 한다.

프로젝트 Import

선택을 마치고 Generate를 클릭하면 프로젝트가 zip 파일 형태로 다운 받아진다. 이제 프로젝트의 실체를 보기 위해 압축을 해제하고 원하는 폴더에 넣은 후 IntelliJ에서 임포트를 하도록 하자.

위 창에서 Open or Import를 클릭 한 후 다운받은 프로젝트 폴더로 찾아가 build.gradle 파일을 열어준다. 처음 프로젝트를 Import 해 오면 필요한 라이브러리를 다운 받아오는데 시간이 조금 걸리니 차분히 기다리도록 하자.

프로젝트 구조 살펴보기

처음 프로젝트를 생성하면 위와 같은 디렉토리 구조가 만들어진다. 다양한 디렉토리들이 있지만, 앞으로 주로 사용하게 될 것은 src 내부에 있는 디렉토리와 파일들이다. 비즈니스 로직 구현을 할 Java 파일은 src > main > java 안에, 그 외 화면을 구성할 HTML/CSS/JS 혹은 설정 파일 등은 src > main > resources 안에 들어간다.

바로 아래 상당히 중요한 디렉토리가 또 있는데, 바로 src > test이다. 최근 테스트 주도 개발(TDD)이 트랜디한 개발 방법의 하나로 자리잡은 만큼, 개발자로서 좋은 테스트 코드를 작성할 수 있는 역량이 필수적이다. 아직 테스트 코드를 작성하는 것보다 하나하나 직접 화면에서 버튼을 눌러보고 값을 입력해 보는게 익숙한 내게 테스트란.. 늦기 전에 꼭 넘어야할 산 중 하나다.

또 하나 중요한 파일은 build.gradle이다. (사실상 다 중요..)

// build.gradle
plugins {
	id 'org.springframework.boot' version '2.3.2.RELEASE'
	id 'io.spring.dependency-management' version '1.0.9.RELEASE'
	id 'java'
}

group = 'com.springboot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
}

test {
	useJUnitPlatform()
}

개인적으로는 확실히 xml 형식인 Maven 보다 가독성이 좋아보인다. 프로젝트를 생성할 때 추가했던 ThymeleafSpring Webdependencies{...} 내부에 선언되어 있는 것을 보니, 라이브러리를 추가할 때는 이 안에 코드를 추가하면 될 것 같다.

프로젝트 실행

이제 프로젝트가 정상적으로 만들어졌는지 실행을 한 번 해보도록 하자. src > main > java 로 들어가보면 위에서 설정한 프로젝명+Application.java 파일과 그 안에 선언된 main 메서드를 발견할 수 있다.

// src > main > java > com.springboot.springbootintro >
// SpringbootIntroApplication.java

package com.springboot.springbootintro;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootIntroApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootIntroApplication.class, args);
	}

}

main 메서드를 확인했으면 Run을 실행한다. 아래 콘솔 창에 로그들이 마구 올라오고, 그 중 Tomcat started on port(s): 8080 ...라는 로그가 보인다면 내장 톰캣이 정상적으로 실행되었다는 의미이다. 눈으로 확인하기 위해 브라우저를 켜고 localhost:8080 으로 접속해보자.

뭔가 잘못 된것만 같은 Error Page가 뜨지만, 아직 화면에 띄워줄 뷰를 따로 만들어주지 않아서 발생하는 에러일 뿐, 애플리케이션은 정상적으로 구동된 것이다.

프로젝트 생성과 확인까지 완료! 다음 강좌에서는 프로젝트에서 사용될 라이브러리들을 살펴보도록 한다.

💡 이 포스트는 김영한 님의 강좌 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 내용과 강의자료를 바탕으로 제가 이해하고 공부한 내용들을 정리한 글입니다. 혹시 잘못된 내용이 있다면 언제든 댓글로 지적 부탁드립니다.

profile
배우고 때때로 익히면 즐겁지 아니한가

0개의 댓글