스프링 부트 핫 스왑
난 P.O.를 하고 있었어.스프링 부트가 있는 C.
지금까지는 매우 양호하고 유망하지만, 한 가지 큰 단점이 있습니다.임베디드 서버를 사용하고 있다(즉, 웹 어플리케이션을 패키징한다)..jar
CSS, HTML 또는 JS 파일을 변경할 때마다 jar를 재구축하고 서버를 재시작해야 합니다.핫스왑이 없어요.UI를 사용하다
의 몇 수정을 할 수 .nginx
그리고 이와 같은 변형이 몇 가지 더 있습니다만, IntelliJ/Eclipse를 사용할 때 내장 옵션이라고 하는 것은 없습니까?
몇 가지 옵션이 있습니다.(특히 디버깅을 실행한 상태에서) IDE에서 실행하는 것은 개발을 수행하는 좋은 방법입니다(모든 최신 IDE에서는 정적 리소스를 새로고침할 수 있으며 보통 Java 클래스 변경의 핫스왑도 가능합니다).Spring Boot devtools는 매우 저렴한 방법으로 큰 효과를 얻을 수 있습니다(클래스 패스에 추가하기만 하면 됩니다).변경이 검출되었을 때 핫 JVM에서 애플리케이션을 재기동하는 것으로 동작합니다.또한 실행 중에 Tymeleaf 캐시 등의 기능을 끄므로 사용자가 직접 수행해야 한다는 것을 기억할 필요가 없습니다.외부 css/js 컴파일러 프로세스에서 사용할 수 있습니다.이 코드를 보다 높은 수준의 도구로 기술하는 경우입니다.
스프링 로딩은 더 이상 권장되지 않지만 아마도 여전히 사용 중일 것입니다.지연이 없는 핫스왑(JRebel 등)이 필요한 경우 보다 정교한 에이전트 기반 도구가 훨씬 적합합니다.
최신 컨텐츠에 대해서는, 문서를 참조해 주세요.
하지만 인텔리J/Eclipse를 사용할 때 내장된 옵션 같은 것은 없습니까?
인텔리J 15.0 Windows 10에서 도움이 된 것은 다음과 같은 시퀀스입니다.
스텝 1: @jonashackt에서 설명한 바와 같이 POM에 다음과 같은 의존관계를 추가한다(이것은 모든 곳에서 언급되지만 이것만으로 해결된다).
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
스텝 2: 다음으로 [파일]-> [설정]-> [빌드]- [실행]-> [전개]-> [컴파일러]에서 선택합니다(모든 서브옵션이 아닌 메인 컴파일러 옵션이 선택되어 있는지 확인합니다).
자동으로 프로젝트 만들기를 활성화합니다.[확인]을 클릭하여 대화상자를 닫습니다.메모 : 최신 버전에서는 자동으로 프로젝트를 빌드합니다.
순서 3: ++(CtrlA윈도우)를 누르고 있으면 제목 "Enter Action or option name"이 표시된 검색 대화 상자가 표시되고 registry를 입력합니다.「Registry...」라고 하는 첫 번째 옵션을 더블 클릭 합니다." 다른 창이 열립니다.다음 옵션을 찾습니다.
compiler.automake.allow.when.app.running
활성화하고 닫기를 클릭합니다.
순서 4: IDE를 재기동
이 출처에서 상세하게 기술한
핫스왑이 가능합니다.
- Java 코드: 스프링 로드 사용
- Tymeleaf 템플릿의 경우: 캐시 비활성화
상세한 것에 대하여는, 다음의 투고를 참조해 주세요.http://blog.netgloo.com/2014/05/21/hot-swapping-in-spring-boot-with-eclipse-sts/
이러한 지원이 어느 정도인지 알 수 없지만, Eclipse IDE를 사용하는 경우(또는 이를 읽는 사람): 디버깅 모드에서 m2e를 통해 Spring-Boot 응용 프로그램을 시작합니다("디버깅" 드롭다운 버튼을 누르고 maven run 구성 항목을 선택하십시오).
마법처럼 효과가 있어요.
maven 실행 구성 항목은 다음과 같이 구성됩니다.
- 목표는 "spring-boot:run"으로 설정됩니다.
- base directory는 프로젝트 디렉토리입니다.
더 이상의 라이브러리(spring-boot-devtools도)는 사용하지 않습니다.
바로 그겁니다.
JRebel을 사용할 수도 있습니다.봄콩을 포함한 모든 변경사항(핫스왑이 좋습니다)을 새로고침합니다.Intelij와 Eclipse 모두와 쉽게 통합됩니다.
gradle을 사용하는 경우 build.gradle에서 다음 구성을 사용합니다.
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'application'
applicationDefaultJvmArgs = ["-agentlib:jdwp=transport=dt_socket,address=localhost:7000,server=y,suspend=n"]
mainClassName = "package.ApplicationRunner"
에서 IDE 명령어를 하여 응용 합니다.gradle build run
이제 IDE는 스프링 부트 애플리케이션이 실행되는 원격 JVM(포트 7000)에 연결할 수 있습니다.또한 정적 파일의 핫 배포도 지원합니다.
또는 IDE에서 종속성이 적절하게 관리되면 IntelliJ에서 메인 클래스를 실행할 수도 있습니다.입니다.SpringApplication.run("classpath:/applicationContext.xml", args);
되고 있는 경우 를 선택합니다.Run > Reload Changed Classes
한 후 "Intelij"로 표시될 수 있습니다.Loaded classes are up to date. Nothing to reload
이치노실제로 클래스 패스리소스가 새로고침되었기 때문입니다.
나의 환경/설정에는 다음이 포함됩니다.
13 ★★★★
Embedded Tomcat( Tomcat)
기본 클래스만 사용하는 '응용 프로그램' 유형의 구성 실행/디버깅
html,및 jsjsp) static html, css js js(jsp 없))를 제공합니다.
pom.xml에서 이 spring-boot-devtools 태그를 사용해 보십시오.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
http://mytechnologythought.blogspot.com/2017/07/how-to-run-server-of-spring-boot-auto.html
1.3.0 이후(현재는 마일스톤2에서)에는 spring-boot-devtools를 가벼운 접근법으로 사용할 수 있습니다.문서 또는 이 블로그 포스트를 참조하십시오.>= 1.3.0으로 업그레이드하고 다음 항목을 pom.xml에 추가합니다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
다른 이름으로 실행...을 사용하여 SpringBoot 응용 프로그램을 시작합니다.그리고 넌 괜찮아
개인 개발자에게는 Tymeleaf(템플릿 엔진), jRebel을 추천합니다.Tymeleaf 템플릿 파일은 HTML 리소스일 뿐입니다.따라서 템플릿 파일을 편집한 후 즉시 변경됩니다.
maven을 사용하는 경우 pom.xml의 spring-boot-maven-plugin은 다음과 같아야 핫스왑이 가능합니다.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
</dependencies>
</plugin>
Tymeleaf를 사용하는 경우 응용 프로그램 속성에 다음을 추가합니다.
spring.thymeleaf.cache=false
하지만 기억해야 할 것이 있습니다.실제 가동 환경에서는 사용하지 마십시오.
Springboot 어플리케이션에서 핫스왑을 실행하는 방법
그라들을 사용하는 경우 종속성에 다음을 포함합니다.
compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.0.1.RELEASE'
&providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
application.properties에서 속성을 추가합니다.
spring.devtools.restart.additional-paths=.
Gradle을 빌드한 후 bootRun으로 응용 프로그램 실행
애플리케이션이 클래스 수정 시 핫 스왑을 수행할 준비가 되었습니다.
언급URL : https://stackoverflow.com/questions/21399586/hot-swapping-in-spring-boot
'programing' 카테고리의 다른 글
WordPress 쇼트 코드 내에서 자동 서식 사용 안 함 (0) | 2023.03.04 |
---|---|
의존성 주입 용기의 이점은 무엇입니까? (0) | 2023.03.04 |
스프링 부트 응용 프로그램 시작 중 MethodArgumentNotValidException에 대해 매핑된 모호한 @ExceptionHandler 메서드를 얻는 중 (0) | 2023.03.04 |
문자열 변수를 파일이 아닌 jq로 전달해도 될까요? (0) | 2023.03.04 |
각도 UI-라우터 다중 보기 (0) | 2023.03.04 |