[springboot-webserivce] 스프링 부트에서 정적 요소 변경 자동 반영 하기

Updated:

[2020.12.28] 부터 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 통해 스프링 공부를 시작했다.

공부한 내용을 글로 정리하려고 한다.

그래야 나중에 다시 찾아보며 공부 할 수 있을테니까 !!

🍱 정적 요소 (HTML, CSS, JS) 변경 자동 반영 하기

머스테치를 통해 프론트를 개발하던 도중 변경사항을 확인하기 위해 새로 고침을 했으나 반영이 되지 않는 현상이 있었다.

자바스크립트 파일도 갱신이 되지 않아 글 수정 버튼을 눌러도 아무런 동작을 하지 않았다.

구글링을 해보니 머스테치 같은 템플릿 엔진을 사용할 경우 변경 요소 갱신을 위해서는 서버를 재시작 해야 한다고 했다.

그런데 심지어 어플리케이션을 멈췄다 재시작 해도 자바스크립트 변경은 적용이 안되는 이상한 현상이 있었다.

🥪 문제 해결하기

먼저 위와 같은 문제를 해결하기 위해 build.gradle 에 Devtools 라이브러리를 추가해 주자.


	...

dependencies {
	...
    compile('org.springframework.boot:spring-boot-devtools')
}


그리고 application.properties 파일에 다음과 같은 옵션을 설정한다.

spring.mustache.cache=false 이 부분은 자신이 사용하는 템플릿 엔진을 넣어주면 된다.

	...
spring.devtools.livereload.enabled=true
spring.mustache.cache=false


이제 인텔리제이의 설정을 변경해야 하는데 Command + Shift + A 를 눌러 Regisrty 를 실행한다.

밑으로 내려서 compiler.automake.allow.when.app.running 을 체크한다.

스크린샷 2021-01-06 오후 8 55 26

다음으로 Preferences 를 열어 Compiler 로 이동해 Build project automatically 를 체크한다.

스크린샷 2021-01-06 오후 11 51 00

이제 마지막 작업만 한다면 어플리케이션을 구동 중에 정적 요소들을 갱신할 수 있다.

스프링부트 설정에서 Runnung Application Update Policies 의 두 가지 항목을 전부

Update classes and resources 로 바꿔준다.

이제 인텔리제이를 재부팅 한 뒤 어플리케이션을 실행시켜보면 정적 요소가 실행 중에도 자동으로 갱신되는 것을 볼 수 있다.

스크린샷 2021-01-06 오후 11 53 38

📡 참조

📕 Spring Boot에서 정적 요소(Js,html…) 변동 시 자동 반영 처리하기(with devtools, IntelliJ)



Categories:

Updated:

Leave a comment