본문 바로가기
개발/스프링 부트

서버 재시작 없이 변경사항 반영하기

by darksilber 2017. 2. 14.
반응형

출처 - http://mudchobo.blog.me/220788563214

 

 

일단 DevTools에서 제공하는 것 중 오토매틱 리스타트와 라이브 리로드 기능을 테스트.

Automatic Restart
소스를 고치면 적용하기 위해 재시작 버튼을 눌러야했다면, DevTools를 이용하면 소스를 수정하고 ide가 컴파일을 하게 되면 그것을 모니터링 해서 재시작하는 듯.
기존에 이것을 제공하지 않았을 때에는 spring loaded라는 프로젝트가 있었는데, 그냥 스프링 공식에서 제공하는 DevTools이 더 좋은 것 같다.

LiveReload
그리고 LiveReload라는 기능이 있는데, 웹페이지 관련된 코드를 수정하면 리프레시 없이 반영해주는 것이다.

대충 테스트를 해보면...환경은 IntelliJ IDEA.

Automatic Restart 기능

1. start.spring.io에서 프로젝트 생성.

Dependencies에 Web, DevTools를 추가.

build.gradle

buildscript { ext { springBootVersion = '1.4.0.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'spring-boot' jar { baseName = 'demo' version = '0.0.1-SNAPSHOT' } sourceCompatibility = 1.8 targetCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-devtools') compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') }

2. 테스트 컨트롤러 작성


SampleController.java

package com.example; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * Created by mudchobo on 2016. 8. 16.. */ @Controller public class SampleController { @RequestMapping("/") @ResponseBody String hello() { return "Hello World"; } }

대충 헬로월드 찍는 컨트롤러.

3. IntelliJ 설정


인텔리제이는 설정을 좀 해줘야 함. 왜냐하면 러닝 중에는 컴파일이 안되게 기본값으로 되어있음.

OSX기준으로 Command + Shift + A를 누르고 Registry를 검색 후 실행.
compiler.automake.allow.when.app.running에 체크를 해줘야함.

그리고 Preferences에서 Build, Execution, Deployment -> Compiler -> Make project automatically를 체크.
이건 프로젝트마다 해줘야 함. 수정될 때마다 컴파일 함.

4. 수정해서 잘되는거 확인.



LiveReload

이것도 그냥 고치면 브라우저를 리로드하는 것 같다. 근데 사이트 가보면 고칠 때마다 직접 반영되는 기능도 있는 것 같은데, 뭔가 돈주고 써야하는 것 같다.

1. 일단 크롬 기준으로 크롬 플러그인 설치
2. 로컬 url도 가능하게 옵션 변경


우상단에 LiveReload아이콘이 있는데, 오른쪽 버튼 눌러서, 확장 프로그램 관리에서 "파일 URL에 대한 엑세스 허용"을 체크하면 localhost가 되는 것 같다.

3. Enabled하고 소스코드 고치면 수정과 동시에 재시작


결국...앱을 재시작할 때 수동으로 할꺼냐 자동으로 할꺼냐.
브라우저 새로고침을 수동으로 할꺼냐 자동으로 할꺼냐.

그 외에 remote debugging도 지원한다고 하는데 아직 해보진 않음.

반응형

댓글