티스토리 뷰

728x90
반응형

이번 포스팅에서는 SpringBoot에서 Spring MVC에서 웹 애플리케이션을 만드는 방법에 대해 알아보겠습니다. 그리고, Spring MVC를 개발하면서 소스 변경사항을 확인하고자 서버 재시작을 해야 하는 불편함을 자동화해주는 Spring DevTools 사용법에 대해서도 알아보겠습니다.

Spring MVC 실습 프로젝트 다운로드하기

https://start.spring.io/ 에 접속하여, 디펜던시에 Spring Web을 선택한 후 프로젝트를 다운로드합니다.

Spring MVC 프로젝트 다운로드

Build.gradle 파일을 열어보면, Spring Web 디펜던시가 추가된 것을 확인할 수 있습니다.

implementation 'org.springframework.boot:spring-boot-starter-web'

Spring MVC 코드 작성하기

MVC는 Model, View, Controller의 약자입니다. Spring에서 Model은 웹 정적 콘텐츠와 Spring의 변수를 매핑해주는 인터페이스이고, View는 웹의 정적 콘텐츠 화면에 해당합니다. 그리고 Controller는 클라이언트로부터 URL에 대한 HTTP 요청을 처리하는 역할을 합니다. Spring MVC를 구현하기 위해 greeting URL을 처리하는 애플리케이션을 작성해보겠습니다. 우선, Controller 클래스를 먼저 작성해보겠습니다.

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class GreetingController {

    @GetMapping("/greeting")
    public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) {
        model.addAttribute("name", name);
        return "greeting";
    }

}

Controller 클래스에 @GetMapping 어노테이션을 통해 /greeting URL에 대한 GET 요청 처리 로직을 작성합니다. 그리고, @RequestParam으로 name변수를 지정하여, GET 요청의 쿼리 스트링으로 name변수를 받을 수 있도록 설정합니다. greeting() 메서드에 Argument로 Model 변수가 정의되어 있는데, 이는 MVC의 model에 해당합니다. mode객체에 name변수에 값을 지정하여, greeting.html에서 사용하는 name변수에 매핑합니다. 반환하는 값은 html의 문서 이름, 즉 view에 해당하는 html 파일 이름을 명시합니다.

다음으로 View에 해당하는 정적 화면인 HTML 코드를 작성해보겠습니다.

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head> 
    <title>Getting Started: Serving Web Content</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>

타임리프 템플릿 엔진을 이용하므로, build.gradle파일에 타임리프 디펜던시를 추가하여, 프로젝트를 reload 해줍니다.

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

${name} 변수는 컨트롤러에서 model 객체에 넘겨준 변숫값이 대응됩니다. 지금까지 작성한 코드가 Spring MVC를 이용하여 웹 애플리케이션을 개발한 내용입니다. 작성이 완료된 스프링 부트 애플리케이션을 실행하면, localhost:8080/greeting URL 호출 시, Hello, World! 문자열이 나타나는 것을 확인할 수 있습니다. localhost:8080/greeting? name=변경된 이름으로 요청하면, Hello, 변경된 이름!이라고 출력됩니다.

DevTools 사용하기

스프링 부트 애플리케이션을 개발할 때, HTML 파일이나 Java파일을 변경할 때마다 스프링 부트 애플리케이션을 재시작해야 하는 번거로움이 있습니다. 스프링 부트 데브 툴즈를 이용하면, 소스 파일이 변경될 때마다, 자동으로 소스코드를 컴파일하고 서버를 재시작해주는 툴이 바로 DevTools입니다. 이러한 기능을 사용하기 위해서는 build.gradle 파일에서 디펜던시를 아래와 같이 추가해줍니다.

developmentOnly 'org.springframework.boot:spring-boot-devtools'

다음으로 IntelliJ의 File >  Settings > Compiler 설정 메뉴에서 Build Project Automatically를 활성화해줍니다.

Spring DevTools사용을 위한 Intellij 설정 1

Ctrl + shift + a를 눌러 Registry 설정 옵션에서 compiler.automake.allow.when.app.running 항목을 활성화해줍니다. 

Spring DevTools사용을 위한 Intellij 설정 2

마지막으로, 서버 리스타트, 리로딩 옵션을 사용하겠다는 옵션을 활성화합니다. 

spring.devtools.livereload.enabled=true
spring.devtools.restart.enabled=true

이러한 설정을 마친 뒤, 소스코드를 변경하면, 서버는 자동으로 재시작되어, 소스코드의 변경사항을 바로 확인하실 수 있습니다.

728x90
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함