Spring Boot를 사용하여 웹 프로젝트를 만들고, 간단한 웹페이지를 출력하는 예제를 해보겠습니다. 스프링 부트는 한번도 해본적이 없는데, 여기저기 글들을 읽다보면 스프링부트가 많이 쓰이고 있는 것 같았습니다. 실제로 처음 스프링 부트를 사용해서 웹 애플리케이션을 처음 만들어본 상황에서는 장점을 잘 모르겠습니다. 좀 공부해보고 정말 장점이 있는지 확인을 해봐야 할 것 같습니다.
Sprng Boot를 사용해서 웹프로젝트를 만드는 방법은 알아보니 STS(Spring Tool Suite)나 전자정부표준프레임웍크 3.8에는 Spring Boot 프로젝트 템플릿이 있어서 그걸 사용하면 되는데 일반 Eclipse에는 프로젝트 템플릿이 없어서 Spring Initializr 사이트에서 템플릿을 다운로드 받아서 import 하는게 편할것 같습니다.
이 글의 예제는 전자정부표준프레임워크 3.8 개발툴을 사용해서 테스트 했습니다. 전체 예제 소스는 글 하단에 추가 했습니다.
- File -> New -> Other...를 선택해서 참을 띄웁니다. Spring Boot -> Spring Starter Project를 선택합니다.
- 프로젝트 설정 창입니다.
+ Type : Maven - 프로젝트 빌드 및 의존성 관리에 Maven 을 사용합니다. Gradle을 선택할 수도 있습니다.
+ Packaging: Jar - 패키징을 Jar로 하도록 설정합니다. War로도 설정할 수 있습니다.
+ Java Version: 8 - 자바는 1.8을 사용합니다.
+ Language: Javav - 언어는 Java를 사용합니다. Kotlin을 선택할 수도 있습니다.
+ Group com.tistory.offbyone - 자신에게 맞는 값을 넣으면 됩니다. 보통 도메인을 사용합니다.
+ Artifact: spring-boot-test - Mave 아티팩트명인데, 이것이 프로젝트명이 됩니다.
+ Version: 0.0.1-SNAPSHOT - 프로젝트의 버전입니다.
+ Description: Demo project for Spring Boot - 프로젝트 설명입니다.
+ Package : com.tistory.offbyone.springboot - 초기 소스들이 만들어질 기본 패키지명 입니다.
- 프로젝트의 의존성을 설정합니다(필요한 라이브러리들을 선택합니다).
+ Spring Boot Version: 2.1.5 - 현재 최신 버전 입니다.
+ Avaliable: 여기에 검색어를 입력하면 선택할 수 있는 라이브러리들의 리스트를 검색할 수 있습니다. 이 예제에서는 Spring Web Starter 하나만 선택합니다.
- Site Info입니다.
실제로 앞에서 설정한 정보를 가지고, https://start.spring.io 사이트에서 다운 받는것 같습니다.
- 프로젝트 템플릿이 없을때 Spring Initializr 사이트에서 프로젝트 템플릿을 다운 받는 방법입니다.
https://start.spring.io에 들어가서 앞에서 설정 했던 정보들과 같이 프로젝트 정보를 입력합니다.
- 의존성(Dependencies)에 역시 앞에서와 같이 Spring Web Starter를 선택하고 다운로드해서 이클립스에서 import하면 됩니다.
- 프로젝트가 만들어 졌습니다.
그런데 에러가 발생하고 있습니다. pom.xml 파일 첫줄에서 에러라고 표시되고 있습니다.
- 에러를 잡고, 웹 애플리케이션 실행을 위한 의존성을 추가합니다.
+ 앞의 에러는 Spring Boot 2.1.5에 maven-jar-plugin 3.1.2가 사용되고 있는데 뭔가 맞지 않는 것이 있어서 입니다. <properties>에 <maven-jar-plugin.version>을 3.1.1로 오버라이드해 줍니다.
<properties>
<java.versionb>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
+ 웹 애플리케이션 실행을 위한 의존성을 추가합니다.
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
- 웹 파일을 위한 폴더를 생성하고, 뷰 리졸버(View Resolver)를 설정합니다.
웹 파일을 위한 폴드를 생성합니다.
+ /src/main/webapp 폴더 만듭니다.
+ /src/main/webapp/WEB-INF 폴더를 만듭니다.
+ /src/main/webapp/WEB-INF/jsp 폴더를 만듭니다.
/src/main/resources/application.properties 파일에 뷰 리졸버를 설정합니다.
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
- 컨트롤러를 만듭니다.
이 테스트용 컨트롤러는 하는 일은 없고 뷰로 바로 넘어가게 되어 있습니다.
package com.tistory.offbyone.springboot.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class WelcomeController {
@RequestMapping("/welcome")
public String welcome() {
return "welcome";
}
}
- jsp 파일을 생성합니다.
- 애플리케이션을 실행합니다.
프로젝트 생성시 SpringBootTestApplication.java 파일이 생성 되어 있습니다. 이 파일에 마우스 오른쪽 키를 누르고, Run As -> Java Application으로 실행합니다.
- 웹 브라우저로 실행해 봅니다.
컨트롤러에 맵핑되어 있는 URL인 http://localhost:8080/welcome 을 호출합니다.
Spring Boot를 사용해서 간단한 스프링 웹 애플리케이션 프로젝트를 만들어 보았습니다. Spring Boot의 장점이 무엇인지 아직은 잘 모르겠네요. 실제로 간단한 기능을 만들어 보면서 확인해 봐야 겠습니다.
전체 예제 소스:
------------------------
2019-10-07 내용 추가
Spring Boot 애플리케이션은 독립실행이 가능 합니다. 이 글의 예제를 jar파일로 만들어서 실행해 보았습니다. 실행을 다음 명령으로 할 수 있습니다.
C:\> java -jar spring-boot-test-0.0.1-SNAPSHOT.jar
프로그램 실행 후 웹 브라우저로 요청해본 결과 404 not found에러가 발생하였습니다. Spring Boot는 처음이라 이것저건 테스트해본 결과 WEB-INF 폴더에 파일을 넣을 경우 jar로 패키징하여 독립실행할 경우 파일을 찾지 못하는 것 같습니다.
필요한 파일을 src/main/resources 폴더 아래에 넣어서 테스트해본 결과 제대로 실행되었습니다.
아마도 독립실행이 아니라 다른 웹서버에 배포할 수 있도록 war 파일로 만든다면 WEB-INF 폴더도 사용할 수 있을것 같습니다. jar와 war 패키징의 차이점을 좀 더 확인해보고 관련해서 글을 올려 보겠습니다.
'프로그래밍 > 스프링프레임워크' 카테고리의 다른 글
Spring Boot + Kotlin + Thymeleaf 프로젝트 만들기 (0) | 2019.08.19 |
---|---|
Kotlin을 사용하는 Spring Boot 웹 애플리케이션 (0) | 2019.06.16 |
Java Config로 Exception Resolver 설정하기 (0) | 2019.03.23 |
Java Config로 메세지소스(MessageSource) 설정하기(다국어 지원) (0) | 2019.03.19 |
스프링프레임워크 Java config로 MyBatis 사용하기 (8) | 2019.03.17 |