
스프링 부트는 스프링의 여러가지 프로젝트 중 하나입니다. 스프링을 사용해보신 분들은 아시겠지만 설정할 내용도 굉장히 많고, XML 파일로 설정할 경우 정말 눈이 빠질만큼 힘듭니다. XML 은 컴파일도 안되니 오타 하나만 나도 찾기가 정말 어렵죠.
이런 단점들을 보완해서 간단히 실행할 수 있는 것이 스프링 부트입니다. 시작해보시면 알겠지만 설정할 것도 거의 없고 그냥 실행 만 시키면 내장 서버에 배포되어 바로 뜹니다. 기존에 설정하던 것들을 자동화시켜서 많이 걷어냈습니다. 그래서 프로토타입을 만들 때 스프링 부트를 활용해보기로 결정했습니다.
기능
[스프링 부트 시작하기]
Spring Tool Suite
스프링 부트를 시작하기 위해 Spring Tool Suite (이하 STS) 를 설치합니다. STS는 이클립스 (Eclipase) 기반의 스프링 개발 환경입니다.
설치는 STS 홈페이지에서 압축 파일을 다운로드 받아 원하는 곳에 압축을 해제하면 됩니다. 혹은 기존에 사용하는 이클립스에서 스프링 플러그인을 설치해서 사용할 수도 있습니다.
Hello, Spring Boot!
역시 새로 배울 때는 ‘Hello, world’ 죠. 사용자의 이름을 받아서 Hello, World랑 같이 화면에 뿌려보겠습니다.
프로젝트 생성
new > Spring Starter Project 로 프로젝트를 생성합니다. 프로젝트 이름을 입력하고 메이븐 (Maven) 을 이용해서 진행하겠습니다.
프로젝트를 생성할 때 미리 POM 파일을 구성할 수 있습니다. 어지간한 건 거의 다 있어서 클릭만하면 되니까 편하군요. 물론 이후에도 POM 파일을 수정 가능합니다. 아래 세 가지 모듈을 선택하고 완료를 누르면 필요한 라이브러리들을 모두 다운받습니다.
Web : 웹 개발 관련 라이브러리 모음
Velocity : 템플릿 엔진 중 하나인 Velocity
DevTools : 개발 툴로 서버 자동 재시작 등을 지원
프로젝트 생성 완료 후 패키지 구조입니다.
HelloSpring [boot][devtools]
├─ src/main/java
├─ com.han
├─ HelloSpringApplication.java
├─ ServletInitializer.java
├─ src/main/resources
├─ static
├─ templates
application.properties
├─ src/test/java
├─ target
pom.xml
인덱스 (Index) 페이지 만들기
src/main/resources/static 경로에 index.html 을 추가합니다. index.html 은 기본 URL 로 접속 시 접속되는 화면입니다. static 폴더는 사이트의 정적인 파일들을 관리할 때 사용합니다. 정적 HTML 문서, 이미지, 영상 등이 있습니다.
[index.html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Index</title>
</head>
<body>
<h1>INDEX</h1>
</body>
</html>
컨트롤러 (Controller) 만들기
패키지를 만들어서 HelloController.java 를 생성합니다.
[HelloController.java]
@Controller
public class HelloController {
@RequestMapping("/hello")
public @ResponseBody String hello() {
return "Hello, Spring Boot!";
}
}
컨트롤러는 Dispatcher Servlet 에서 받은 요청에 따라 로직을 처리하는 역할을 합니다. 여기서는 /hello라는 경로로 오는 요청에 "Hello, Spring Boot!"라는 응답을 보냅니다. @ResponseBody 어노테이션을 이용해 String 자체를 응답의 body로 사용해서 보냅니다.
실행하기
이제 실행을 해봅니다. 따로 서버 구성할 필요 없이 HelloSpringApplication.java 파일을 오른쪽 클릭해서 Run as.. > Spring Boot App 으로 실행합니다.
[HelloSpringApplication.java]
@SpringBootApplication
public class HelloSpringApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
}
웹 애플리케이션인데 메인 함수가 있군요. 내장된 톰캣 대신 설정을 통해 Jetty나 Undertow를 사용할 수도 있고, 외부 서버를 사용할 수도 있습니다.
기본 포트는 8080 입니다. 포트 충돌 에러가 나시는 분들은 src/main/resources/application.properties 에서 다음과 같이 작성하고 8080 대신 다른 포트로 수정합시다.
server.port = 8080;
잘 떴다면 이런 로그가 뜹니다.
Tomcat started on port(s): 8080 (http)
Started HelloSpringApplication in 2.047 seconds (JVM running for 2.794)
http://localhost:8080/ 로 접속해보면 index.html 화면을 볼 수 있고,
http://localhost:8099/hello 로 접속하면 ‘Hello, Spring Boot!’ 를 확인할 수 있습니다.