programing

스프링 부트 핫 스왑

topblog 2023. 3. 4. 14:07
반응형

스프링 부트 핫 스왑

난 P.O.를 하고 있었어.스프링 부트가 있는 C.

지금까지는 매우 양호하고 유망하지만, 한 가지 큰 단점이 있습니다.임베디드 서버를 사용하고 있다(즉, 웹 어플리케이션을 패키징한다)..jarCSS, 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 어플리케이션에서 핫스왑을 실행하는 방법

  1. 그라들을 사용하는 경우 종속성에 다음을 포함합니다.compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.0.1.RELEASE'&providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')

  2. application.properties에서 속성을 추가합니다.spring.devtools.restart.additional-paths=.

  3. Gradle을 빌드한 후 bootRun으로 응용 프로그램 실행

애플리케이션이 클래스 수정 시 핫 스왑을 수행할 준비가 되었습니다.

언급URL : https://stackoverflow.com/questions/21399586/hot-swapping-in-spring-boot

반응형