이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다.
스프링 부트에서 서버를 재시작하지 않고 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' 파일만 다시 컴파일 하게 됩니다.
마지막으로 웹 브라우저로 가서 '새로 고침'을 하면 아래와 같이 서버가 실행중인 상태에서 변경된 값이 반영되는 것을 확인할 수 있습니다.
'프로그래밍 > Spring' 카테고리의 다른 글
[스프링부트] 이벤트 발행 및 구독 (0) | 2020.03.17 |
---|---|
[스프링부트] H2 DB 설치 및 사용 (2) | 2020.03.02 |
[스프링 부트] Test 이후 롤백(Rollback) 하지 않기 (0) | 2020.02.22 |
[스프링 부트] 의존성 확인하기 (0) | 2020.02.17 |
[스프링 부트] 프로젝트 시작하기 (Spring initializr) (0) | 2020.02.17 |