English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot DevTools

Spring Boot DevTools

Spring Boot 1.3Spring Boot DevTools라는 다른 모듈을 제공합니다. DevTools은 Developer Tool 이 모듈의 목적은 Spring Boot 애플리케이션을 사용할 때 개발 시간을 줄이기 위해 시도하고 단축합니다. Spring Boot DevTools은 변경 사항을 받아들이고 애플리케이션을 다시 시작합니다.

우리의 프로젝트에서 DevTools를 구현하려면 pom.xml 파일에 다음 의존성을 추가할 수 있습니다.

<dependency>
<groupId>org.springframework.boot</groupId>/groupId>
<groupId>-boot-<artifactId>spring/devtools<
artifactId>
<scope>runtime<scope >/<

dependency>

Spring Boot DevTools 기능

Spring Boot DevTools는 다음 기능을 제공합니다: 기본 값 설정 자동 재시작 LiveReload 원격 디버깅 터널

원격 업데이트 및 재시작 기본 값 설정: : Spring Boot는 템플릿 기술을 제공합니다 Thymeleaf 속성spring.thymeleaf.cache.

캐시를 저장하고应用程序을 재시작하지 않고 페이지를 업데이트할 수 있게 합니다. 하지만 개발 중에는 이러한 속성을 설정하는 것이 항상 문제를 가져옵니다.-boot-当我们使用spring

주의: devtools 모듈을 사용할 때는 속성을 설정할 필요가 없습니다. Thymeleaf, Freemarker, Groovy 템플릿의 개발 캐시 중에는 자동으로 비활성화됩니다.-application.properties 파일에서 configprop: spring.devtools.add를 설정하면 원하지 않는 경우应用程序에 기본属性 값을 적용하지 않을 수 있습니다.

properties []를 false로 설정합니다. 자동 재시작: 자동 재시작은 Java 클래스를 다시 로드하고 서버에서 설정하는 것을 의미합니다. 서버에서 변경된 후, 그는 동적으로 배포되고 서버가 재시작되며 변경된 코드가 로드됩니다. 이는 주로 마이크로서비스 기반의应用程序에 사용됩니다. Spring Boot는두 가지

타입의ClassLoader에 로드되었습니다:기본ClassLoader에 로드된 불변한 클래스(3분의 2)는 우리가 적극적으로 개발 중인 클래스는 기본ClassLoader에 로드되었습니다.재시작ClassLoader에서.

应用程序이 재시작될 때마다 재시작된ClassLoader는 버려지고 새로운 클래스로 채워집니다. 따라서 기본ClassLoader는 항상 사용 가능하며 채워져 있습니다.

속성을 사용하여 spring.devtools.restart.enabled 설정하십시오: 서버의 자동 재시작을 비활성화하려면 오류.

기억해:

DevTools는 항상 클래스 패스 리소스를 모니터링합니다. 재시작을 유발하는 유일한 방법은 클래스 패스를 업데이트하는 것입니다. DevTools는 정상적으로 작동하기 위해 별도의应用程序 클래스 로더가 필요합니다. 기본적으로 Maven이应用程序 프로세스를 파생합니다. 자동 재시작은 LiveReload과 함께 잘 작동합니다. DevTools는 재시작 중에应用程序의 컨텍스트를 종료하는 헌크를 통해 재시작 시 그를 종료하는 데 필요합니다.

LiveReload: Spring Boot DevTools 모듈은 다음과 같은 이름을 가진 LiveReload의 내장 서버로 알려집니다.에서 변경사항을 진행하면, 그应用程序은 자동으로 브라우저 새로고침을 트리거할 수 있습니다. 자원. 이것은 또한 자동 새로고침.

주의: 속성을 통해 을 설정하여spring.devtools.livereload을 통해 LiveReload을 비활성화할 수 있습니다. 활성화 false.

그것은 Chrome, Firefox, Safari의 브라우저 확장 프로그램을 제공합니다. 기본적으로 LiveReload이 활성화됩니다. LiveReload은 다음 경로에서 작동합니다:

/META-INF/maven /META-INF/resources /자원 /정적 /public /템플릿

우리는 이 경로를 제외하여 브라우저에서 자동 재시작을 비활성화할 수도 있습니다. 예를 들어:

spring.devtools.restart.exclude=public/**, static/**, templates/**

속성을 사용하여 spring.devtools.restart.additional-paths를 통해 다른 추가 경로를 확인할 수 있습니다.예를 들어:

spring.devtools.restart.additional-paths=/path-to-folder

기타 경로를 제외하고 기본 경로를 유지하고 싶다면, 속성을 사용하십시오 spring.devtools.restart.additional-exclude.예를 들어:

spring.devtools.restart.additional-exclude=styles/**

기억해 주세요

우리는 한 번에 한 개의 LiveReload 서버를 실행할 수 있습니다. 애플리케이션을 시작하기 전에, 다른 LiveReload 서버가 실행 중인지 확인하십시오. IDE에서 여러 개의 애플리케이션을 시작하면, 그것은 첫 번째 LiveReload만을 지원합니다.

원격 디버깅 터널: Spring Boot는 JDWP(Java 디버깅 라인 프로토콜)을 통해 HTTP를 통해 애플리케이션으로 직접 터널링할 수 있습니다. 또한, 포트만 공개된 애플리케이션으로 배포할 수도 있습니다.80과443인터넷 클라우드 제공업체.

원격 업데이트 및 재시작: DevTools가 제공하는 또 다른 팁은: 그것은 원격 애플리케이션을 지원합니다 업데이트재시작.로컬 클래스 경로의 파일 변경사항을 모니터링하고 원격 서버로 전송한 후 다시 시작합니다. 이 기능을 LiveReload과 결합하여 사용할 수도 있습니다.

트리거 파일을 사용하여

빈번한 재시작으로 인해 자동 재시작은 때로는 개발 시간을 느리게 할 수 있습니다. 이 문제를 해결하기 위해 우리는 다음을 사용할 수 있습니다. 트리거 파일.SpringBoot는 트리거 파일을 모니터링하고 파일 내 변경사항을 감지합니다. 그런 다음 서버를 다시 시작하고 모든 이전 변경사항을 다시 로드합니다.

속성을 추가하여 spring.devtools.restart.trigger-file는 우리의 애플리케이션에서 파일 트리거를 구현합니다.내부적인 것인가 외부적인 것인가요. 예를 들어:

spring.devtools.restart.trigger-file=c:/workspace-sts-3.9.9.RELEASE/restart-trigger.txt

Spring Boot DevTools 예제

단계1: Spring Initializr 사용 https://start.spring.io/.

단계2: 제공 그룹이름 그리고 아이템 ID. 우리는 그룹 이름을 제공했습니다 com.w3codebox 그리고 아이디 spring-boot-devtools-example.

단계3: 다음 의존성을 추가하세요: spring-boot-starter-web spring-boot-devtools .

단계4: 클릭 생성버튼. 그것은 프로젝트의 Jar 파일.

단계5: Jar 파일을 추출합니다.

단계6: STS에 폴더를 가져옵니다.

파일-> 가져오기-> 기존 Maven 프로젝트-> 탐색-> spring 폴더를 선택하세요-boot-devtools-example-> 완료

성공적으로 가져온 후, 우리는 STS의 Package Explorer 부분에서 다음과 같은 디렉토리를 볼 수 있습니다.

단계7: 열기 SpringBootDevtoolsExampleApplication.java 그리고 Java 애플리케이션으로 실행합니다.

그런 다음, 애플리케이션에서 어떤 변경도(파일이나 코드를 편집하거나 제거)하면, 변경 사항을 저장합니다. 변경 사항을 저장하면 서버가 재시작되고 변경 사항을 가져옵니다.