본문 바로가기
Spring/Spring Boot

Spring devtools restart 파일 감지

by 아이티.파머 2018. 8. 31.
반응형

스프링부트 개발자툴 활용하기, 

개발시 resource 성격의 파일을 리로드할때, 혹은 변경된 클레스만 핫스와핑 하여 사용시

 

  • spring devtools 모듈을 설정 하여 사용한다. 
  • spring.devtools.restart.enabled 설정으로 restart 제어 .

 

재시작 비활성화 (false 시)

 

.application.preperties 

    - 클레스 로더 초기화 하여 핫스와핑은 되지만 파일 감지는 없음 (제한적)

.java main method에 System preperties

    - 재시작 지원을 완벽히 비활성화 할때,  예를 들면 특정 라이브러리에서만 비활성화시.

 

 

Debug Mode 로 실행해야 동작 한다.

(spring boot version 2.0.3.RELEASE)

 

 

maven 

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <optional>true</optional> <!--restart 를 원하지 않을 경우 false -->
</dependency>

 

gradle 

compile group: 'org.springframework.boot', name: 'spring-boot-devtools'

 

application.yml(application.properties)

 

spring:
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
  devtools:
    livereload:
      enabled: true     # livereload 사용시 활성화
    restart:
      enabled: false    #운영 에서는 제거.

java main method 실행 

 

public static void main(String[] args) {
   // hot deploy 후 자동 리스타트 하지  않도록 한다, Run Application 프로퍼티에서 false로 설정.
   //  완전한 재시작 없음 메인메소드에서 프로퍼티 삽입 
   System.setProperty("spring.devtools.restart.enabled", "false");
      
   SpringApplication app = new SpringApplication(WebApplication.class);
   app.setBannerMode(Banner.Mode.CONSOLE);
   app.run(args);

}

 

 

 

인텔리 J에서 사용시 해당 IDE 내용을 활성화 할것  ( 혹은 ctrl+f9  을 누르면 클레스 리로딩 물어봄)

 

  1. Enable "Build project automatically" from Settings->Build, Execution, Deployment->Compiler
  2. Go to Registry(Ctrl+A, type "Registry") and enable compiler.automake.allow.when.app.running and ide.windowSystem.autoShowProcessPopup

 

 

 

결론 

devtools이용시 이렇게 해도 저렇게 해도 안될때가 많은데 , 테스트해본결과 IDE에서는 debug 모드에서만 동작되며 

잦은 restart는 하지 않기 위해 false로 사용한다.  (프로퍼티는 yml / 코드않에서 / 실행시 옵션중 선택하여 한곳에서만 해주면 된다.  굳이 세군데 다변경해줄 필요 없음.) 

 

 

 

 

 

 

 

반응형

'Spring > Spring Boot' 카테고리의 다른 글

Spring boot admin  (0) 2020.06.22
Spring Cloud Config  (0) 2020.06.22
Springboot jpa & Hibernate Naming Strategy(네이밍 전략)  (2) 2018.08.31
Spring boot Swagger  (0) 2017.08.31
Spring Boot mobile project 에 tiles 적용  (0) 2017.02.03