본문 바로가기

프로그래밍/Spring

[스프링 부트] 서버를 재시작하지 않고 View 갱신하기 (devtools)

이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다. 


스프링 부트에서 서버를 재시작하지 않고 View의 변경 사항을 갱신하는 방법에 대해서 알아보겠습니다. 

 

우선 접속하면 접속자의 이름을 보여주는 간단한 페이지를 만들었습니다. 

 

소스코드는 아래와 같습니다. 

 

IndexController

@Controller
public class IndexController {

    @GetMapping("/")
    public String index(Model model) {

        model.addAttribute("name", "신영철");

        return "index";
    }
}

 

index.html (thymeleaf)

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<p th:text="'반갑습니다. ' + ${name}">반갑습니다.</p>
</body>
</html>

만약 서버가 실행중인 상태에서, 'IndexController'에 있는 '신영철' 이라는 이름을 '게스트'로 변경하면 어떻게 될까요? 

이 상태에서는 서버를 재 시작하지 않는 이상 Controller 변경 사항을 저장하고, 웹 페이지를 새로고침 해도 변경 사항이 반영되지 않습니다. 

 

변경 사항을 반영할 수 있는 방법을 알아보겠습니다. 

 

먼저 'build.gradle' 에 'devtools' 의존성을 추가합니다. 여기에는 개발에 도움을 줄 수 있는 다양한 기능들이 포함되어 있습니다. 

 

dependencies {
	implementation 'org.springframework.boot:spring-boot-devtools'
}

 

그리고 서버를 재 시작하면 터미널에서 'main'으로 표시되는 부분들이 'restartedMain' 으로 변경된 것을 확인할 수 있습니다. 

이렇게 되면 준비는 완료되었습니다. 

 

 

서버가 실행중인 상태에서 '신영철'을 '게스트'로 변경하고 저장합니다. 

@Controller
public class IndexController {

    @GetMapping("/")
    public String index(Model model) {

        model.addAttribute("name", "게스트");

        return "index";
    }
}

 

그리고 인텔리제이에서 'Build -> Recompile 'index.html''을 선택합니다. 그럼 'index.html' 파일만 다시 컴파일 하게 됩니다. 

 

 

마지막으로 웹 브라우저로 가서 '새로 고침'을 하면 아래와 같이 서버가 실행중인 상태에서 변경된 값이 반영되는 것을 확인할 수 있습니다.