2023-09-25 작성

스프링부트 개발환경 구성하기 (3) 스프링부트 프로젝트 생성

📢 2024년 2월 기준으로 포스팅 내용을 업데이트하였습니다.

포스팅 순서는 아래와 같다.

 

스프링부트 프로젝트 생성

스프링부트 프로젝트를 생성하려면, STS 툴에서 Spring Start Project 기능으로 새 프로젝트를 생성할 수도 있고, Spring Initializr로 프로젝트를 쉽게 생성할 수 있다. 이것 또한 개인 취향에 따라 선택하면 된다. 여기서는 2번째 방법으로 만들 것이다.

해당 사이트로 접속하면 꽤 복잡해 보이는 설정에 지레 겁을 먹기 쉽다. 하지만 하나씩 살펴보면 별것 아니다.

왼쪽 화면부터 순서대로 설명하려고 한다.

■ Project
사용할 빌드 툴을 선택한다. 나는 Maven을 선택했다. Gradle은 groovy, kotlin 중에서 선택해야 하는데, 최근 kotlin이 새로운 Gradle 빌드의 기본 언어로 채택되었음을 참고하자.

Language
- 스프링부트로 만들려는 프로그래밍 언어를 선택한다. 나는 Java를 선택했다.

Spring Boot
- 스프링 부트 버전을 선택한다. 버전 이름 뒤에 아무것도 붙지 않는 버전 중에서 선택한다. 참고로 Java 17을 사용하려면 스프링부트 3 버전을 선택해야 한다.

  • SNAPSHOT : 아직 개발이 완료되지 않는 버전
  • M2(Milestone) : 개발은 완료되었으나, 아직 기능 개선 중이거나 버그 수정하는 버전
  • R2(Release Candidate) : 기능 개선 및 버그 수정이 완료되었으나, 최종적으로 릴리즈 되지는 않은 버전

여기서 소소한 궁금한 점이 있다. 제시된 스프링 부트 버전들은 어디서 제시하는 것일까? 답은 스프링부트 문서에 있는  GA 버전을 가져온다. GA(General Availability) 버전은 안정화된 상용 서비스를 의미한다. 즉 스프링부트 이니셜라이저는 GA 버전을 추천한다.


Project Metadata
- 프로젝트 정보를 입력한다.

  • Group : 프로젝트를 만드는 그룹명을 입력한다. 일반적으로 기업의 도메인명을 역순으로 입력한다. (예를 들어 com.company)
  • Artifact : 빌드 결과물의 이름을 입력한다.
  • Name : 프로젝트명(애플리케이션명)을 입력한다. (예를 들어 basicBoard)
  • Description : 프로젝트에 관한 간단한 설명을 입력한다.
  • Package name : 프로젝트에 생성할 패키지를 설정한다. (예를 들어 com.company.basicBoard)
  • Packaging : 배포를 위해 프로젝트를 압축하는 방법을 선택한다. 스프링 부트에서 가이드하는 표준은 jar이다.

Dependencies
- [ADD DEPENDENCIES] 버튼을 클릭해서 필요한 의존성들을 추가한다. 나중에도 추가할 수 있으니 기본적인 것들만 선택했다. 나는 Spring Web, Spring Boot DevToolsThymeleaf를 선택했다. 의존성 선택시 주의할 점은 DB 관련 의존성은 넣지 말자. 미리 추가해 버리면 프로젝트 생성 시 datasource 오류가 발생한다. 

  • Spring Web (웹) : RESTful을 포함한 웹을 구축하고 Spring MVC를 사용하여 Apache Tomcat을 기본 내장 컨테이너로 사용한다.
  • Spring Boot DevTools (개발툴) : 스프링부트 개발시 좀 더 편리한 추가 도구 세트가 포함되어 있는 라이브러리다. 빠른 애플리케이션 재시작, LiveReload, 개발 환경을 개선하기 위한 구성들을 제공한다. 개발툴에 더 자세히 알고 싶다면 스프링부트 Developer Tools 가이드를 참고하자.
  • Thymeleaf (템플릿 엔진) : 웹이나 독립실행 가능한 환경에서 사용하는 서버 사이드 Java 템플릿 엔진이다. 스프링부트는 Thymeleaf(타임리프)를 권장하고 있으며 JSP를 비권장하니 웬만하면 쓰지 말자.


모든 작성이 끝났으면 [GENERATE] 버튼을 눌러 스프링부트 프로젝트를 생성한다. 프로젝트명.zip 파일이 다운로드되는데 폴더를 압축 해제하여 C:\dev\workspace 위치로 옮겨주었다.

스프링부트 프로젝트 import

이제 STS에서 새로 만든 프로젝트를 import 하자. STS 메뉴에서 [File] > [Import]를 클릭한다. 입력란에 maven으로 검색해서 Existing Maven Project를 선택한다. (gradle일 경우 Existing Gradle Project로 검색하면 된다)


[Browse]를 클릭하여 Root Directory를 스프링부트 프로젝트 위치로 설정한다. maven 프로젝트이기 때문에 아래처럼 pom.xml 파일이 목록에 보이는지 확인하고 [Finish] 버튼을 클릭한다.

참고로 Add project(s) to working set 체크박스는 많은 프로젝트를 그룹 지어서 관리하는 기능인데, 여기서는 필요 없어서 패스한다.

 
메이븐 프로젝트가 import 되면서 기본적인 뼈대가 있는 스프링부트 프로젝트가 추가된다. 프로젝트를 만들 때 jar / war 중에서 war을 선택하게 되면 ServletInitializer.java 파일도 생성되지만, 나는 jar로 선택했기 때문에 보이지 않는다.

서버 실행해서 작동 확인하기

스프링부트는 Apache Tomcat을 기본 내장 컨테이너로 사용한다. 내장 톰캣이 있어서 별도로 서버를 설치하지 않아도 된다. 프로젝트 우클릭 후 [Run As] > [Spring Boot App]를 눌러 톰캣을 실행한다.

콘솔창에서 톰캣이 8080 포트로 시작되었음을 알 수 있다.

http://localhost:8080/ 로 접속하면 아래처럼 Whitelabel Error Page (404) 오류가 발생한다. 만들어진 화면이 없어서 당연히 오류가 발생한다. 타임리프 화면을 만들어보자.

타임리프 기본 경로 설정

아래처럼 정상작동 확인용 파일 2개를 추가하자.

com.company.basicBoard 패키지에서 TestController.java 파일을 생성한다.

package com.company.basicBoard;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class TestController {

	@GetMapping(value = "/")
	public String home() {
		return "test";
	}
}

 
src/main/resources 패키지의 templates 폴더에서 test.html 파일을 생성한다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
	개발새발
</body>
</html>

다시 http://localhost:8080/ 로 접속하면 home.html 파일이 보이도록 기본적인 뷰 설정을 완료했다. 

스프링 이니셜라이저로 스프링부트 프로젝트를 만들고, 내장톰캣을 실행하여 정상적으로 화면이 보여지는 것을 확인하였다.

다음편 가기 >> 스프링부트 개발환경 구성하기 (4) 메이븐 Local Repository 설정