본문 바로가기

Dev/Spring

[Spring] Spring Boot 시작하기 (1) - 프로젝트 생성

 

 

 

 

 

포스팅 시리즈

 

본 포스팅에서는 Spring Boot 초기 세팅 방법에 대해 기록합니다.

 

설명에 앞서 본 포스팅 시리즈는 Spring Framework에 대한 기술적인 설명은 포함하고 있지 않습니다.

Spring Framework가 무엇인지 전혀 모르시는 분들에게는 적절하지 않을 수 있으므로 양해 부탁드립니다.

 

JAVA 설치, 환경 변수 설정까지 포함하고 있으니 필요한 부분만 참고해주세요,

 

공식 홈페이지에서 소개하는 Spring Boot의 특징은 아래와 같습니다.

  • 독립 실행형 Spring Framework 프로젝트 개발이 가능하다.
  • 웹 애플리케이션 서버인 Tomcat, Jetty, Undertow를 직접 내장하고 있어 WAR 파일을 배포할 필요가 없다.
  • 가능할 때마다 Spring 및 타 라이브러리를 자동으로 구성한다.
  • 메트릭, 상태 확인 및 외부 구성과 같은 프로덕션 준비 기능을 제공한다.
  • 코드 생성이 전혀 없고 XML 구성이 필요하지 않다. (이는 의존성, 프로젝트 설정과 관련한 부분으로 추측됩니다.)

요약하자면 기존의 Spring Framework에서의 서버 설정, 불편했던 의존성 관리 등을 자동으로 해주는 편리한 프로젝트라는 의미로 해석됩니다.

즉, Spring Boot는 Spring Framework와 무관하지 않고, Spring Framework를 좀 더 편하고 생산성 있게 사용할 수 있게 해주는 프로젝트라고 보면 되겠습니다.

 

1. 개발 환경

프로젝트를 생성하기에 앞서, 본 예제에서의 개발 환경은 아래와 같습니다.

  • OS : Windows 10
  • IDE : STS4
  • Language :  Java11 (Spring Boot는 Java 8 버전 이상부터 지원합니다.)

Java 8을 지원함에도 11을 설치하는 이유는 특별히 없습니다.

11 버전을 8 버전보다 많이 사용하고 있는 것으로 알고 있기 때문에 저는 11을 이용하겠습니다.

 

STS는 Spring Tool Suite의 약자로, Spring Framework 개발에 필요한 개발 환경이 사전에 세팅되어있어 보다 편리하게 개발할 수 있도록 도와주는 IDE로, 전체적인 모양새는 이클립스와 유사합니다.

 

만약 STS4가 없는 경우 아래의 경로에서 다운로드 & 설치합니다.

spring.io/tools

 

Spring Tools 4 is the next generation of Spring tooling

Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.

spring.io

 

 

2. STS4에서의 Spring Boot 프로젝트 명세

이번에 생성할 프로젝트의 주목해야 할 프로젝트 환경은 아래와 같습니다.

  • View Template : thymeleaf
  • Build Tool : gradle
  • Model Lib: Lombok, Mybatis

기존 Spring 프로젝트에서 View 템플릿은 주로 JSP를 사용했습니다.

하지만 Spring Boot에서는 JSP를 사용할 수는 있지만, Spring Boot 측 공식 안내에 따르면 권장하지 않는다고 합니다.

따라서 Spring Boot에서 사용할 View 템플릿을 thymeleaf로 정하겠습니다.

 

Spring은 maven을 이용해 빌드, 의존성 관리를 했는데, Spring Boot에서는 gradle을 사용하겠습니다.

 

데이터 매핑은 Mybatis를 사용하며, 데이터 모델은 Lombok을 사용하겠습니다.

Lombok은 모델 객체의 코드를 깔끔하게 작성하도록 도와줍니다.

Lombok을 사용하면 생성자, getter, setter 등을 일일히 작성할 필요 없이 어노테이션 하나만으로 해결해주는 편리한 라이브러리입니다.

 

3. JAVA 설치 및 환경 변수 설정

JAVA 11이 이미 설치되어있다면 이 항목은 건너뛰어도 무방합니다.

 

아래 링크에서 JAVA SE 11을 다운로드합니다.

본 포스팅에서는 윈도에서의 설치를 기본으로 하고 있으므로, Windows x64 Installer를 받고 설치합니다.

 

www.oracle.com/java/technologies/javase-jdk11-downloads.html

 

설치가 완료되었다면 시스템 환경 변수를 등록해 줍니다.

 

 

 

 

 

 

내 PC 우클릭 -> 속성을 누릅니다.

 

 

 

 

 

 

고급 시스템 설정을 시스템 속성 창이 활성화되는데, 여기서 고급 탭의 환경 변수를 클릭합니다.

 

 

 

 

 

 

시스템 변수 항목에서 새로 만들기를 누릅니다.

 

 

 

 

 

 

변수 이름은 JAVA_HOME으로 설정합니다.

다른 이름도 무방하지만 거의 관례적으로 Java의 환경 변수는 JAVA_HOME으로 지정합니다.

 

변수 값은 java가 설치된 경로를 지정하면 됩니다.

저와 설치 경로가 다를 수 있으니 꼭 경로를 확인하고 적용합니다.

확인 버튼을 눌러 새 시스템 변수 창을 닫습니다.

 

그리고 시스템 변수 중 Path 항목을 선택하고 편집 버튼을 누릅니다.

 

새로 만들기 버튼을 누르고 %JAVA_HOME%bin 값을 추가합니다.

 

이제 확인 버튼을 눌러 환경 변수를 저장하고 cmd나 windows terminal을 열고 아래와 같이 변수 적용이 되었는지 확인합니다.

 

 

 

 

만약 위 사진과 전혀 다른 결과를 출력한다면 환경 변수의 변수 값 경로를 다시 확인해주세요.

 

 

4. Lombok 라이브러리 설치

Spring Boot에서 Lombok을 사용하려면 Lombok.jar 파일을 설치해야 합니다.

아래의 사이트에서 설치 파일을 확보합니다.

 

projectlombok.org/download

 

Download

 

projectlombok.org

 

다운로드가 완료되었다면 lombok.jar 파일을 더블 클릭 해 설치합니다.

 

 

lombok 인스톨러에서 설치된 IDE를 자동으로 스캔합니다.

만약 스캔이 되지 않는다면 Specify location 버튼을 눌러 STS4의 실행파일 경로를 수동으로 설정해줍니다.

이후부터는 설정해 줄 것이 딱히 없으므로 쭉 설치합니다.

 

이제 프로젝트 생성 외적으로 할 것은 없습니다.

 

5. STS4에서 Spring Boot 프로젝트 생성

Spring Boot 프로젝트는 spring initializr 웹 도구에서 생성할  수도 있지만, 저는 STS4에서 직접 생성해 주겠습니다.

혹시 위 웹 도구를 사용하실 분들은 아래 사이트에서 기술 명세를 작성한 후, 다운로드하여 STS4에서 Import 하면 됩니다.

 

start.spring.io/

 

 

 

STS4 IDE를 실행하면 화면 좌측에 Package Explorer 탭에서 우클릭 -> New -> Spring Starter Project 버튼을 눌러 새 Spring Boot 프로젝트를 생성합니다.

 

 

Type에서 Gradle을 선택하고 Java Version은 11을 선택합니다.

 

 

 

이 화면에서는 프로젝트의 추가할 의존성을 선택합니다.

여기서 추가하지 못하더라도 나중에 build.gradle 파일에서 정의할 수 있습니다.

 

저는 Spring web, String Boot DevTools, Lombok, MyBatis Framework, Thymeleaf를 추가했습니다.

Spring web은 MVC패턴의 웹 프로젝트를 개발할 때 필요한 기본 의존성으로, 여기에는 tomcat도 포함합니다.

String Boot DevTools는 프로젝트 개발에 필요한 편리한 기능들을 제공합니다.

대표적인 기능으로는, 코드에서 무언가 변경사항이 발생할 경우 바뀐 부분을 즉시 적용하도록 도와줍니다.

 

 

방금 설정한 정보들을 spring initializr로 보내서 설정이 적용된 프로젝트를 다운로드합니다.

 

 

STS4의 Package Explorer를 확인해 보면 위와 같이 프로젝트가 생성되었음을 확인할 수 있습니다.

bundile.gradle 파일을 열어 우리가 추가한 의존성이 포함되어있는지 확인해봅니다.

 

 

정상적으로 포함되었음을 확인했습니다.

 

 

 

6. 간단한 테스트

기본적인 것은 이미 갖춰진 상태지만 이대로는 서버 실행이 안될 겁니다.

여기서, 프로젝트가 제대로 구동이 되는지 테스트해보기 위해 임시로 몇 가지 추가, 수정을 해보겠습니다.

 

먼저, bundl.gradle 파일에서 mybatis 의존성을 주석 처리합니다.

 

mybatis 의존성 주석 처리

 

주석처리를 안 해주면 아직 DB를 정의하지 않아서 서버를 구동할 때 오류를 발생시키므로 임시로 주석 처리해둡니다.

 

 

그리고, 소스코드 우클릭 -> Gradle -> Refresh Gradle Project 버튼을 눌러 의존성 변경 사항을 적용합니다.

 

 

그리고 서버를 구동시키기 위해 application.properties 파일에 포트번호를 정의하고, 클래스 파일의 무언가 변화가 있을 때 자동으로 서버를 재시작하도록 설정하겠습니다.

 

# application.properties에 작성
# 서버 포트 번호
server.port=8080

# 소스파일에 변화가 있을 때 자동으로 서버 재 시작 설정
spring.devtools.restart.enabled=true

 

이제 웹 요청을 통해 결과 값을 반환하는 간단한 컨트롤러를 작성해 보겠습니다.

 

Home 컨트롤러 정의

 

src/main/java 경로에 com.example.demo.controller 패키지를 생성하고 HomeController.java를 생성합니다.

그리고 아래의 내용을 컨트롤러에 작성합니다.

 

@Controller
public class HomeController {
	@RequestMapping(value = "/home", method=RequestMethod.GET)
	@ResponseBody
	public String goHome(HttpServletRequest request) {
		System.out.println("enter");
		return "Hello Spring Boot";
	}
}

 

get 방식으로 /home 요청을 받았을 때 화면에 Hello String Boot 문자열을 출력하는 컨트롤러입니다.

view를 반환하지 않기 때문에 일식적으로 @ResponseBody 어노테이션을 사용했습니다.

 

 

서버를 구동해봅니다.

 

 

IDE 좌측 하단에 아마도 Boot Dashboard 패널이 있을 겁니다.

여기서 demo 서버 우클릭 -> (Re)start 버튼을 눌러 서버를 구동합니다.

 

만약 Boot Dashboard가 없다면 아래의 글을 확인하세요.

더보기

메뉴바에서 Window -> shw View -> Other 버튼을 누릅니다.

 

 Show View 창에서 boot로 검색 후, Boot Dashboard를 열어주면 됩니다.

 

 

 

서버를 시작하면 콘솔 창에 위와 같이 로그를 출력해줍니다.

 

이제 브라우저에서 localhost:8080/home로 접속합니다.

 

 

컨트롤러가 정상적으로 작동하고 있음을 확인했습니다.

다음 포스팅에서는 Spring Boot에서 화면단을 구성하는 Thymeleaf 뷰 템플릿에 대해 다루겠습니다.