Ich habe ein P.O.C mit Spring Boot gemacht.
Bisher lief es wirklich gut und vielversprechend, aber es gibt einen großen Nachteil: Ich verwende einen eingebetteten Server (dh die Web-App in einen .jar
packen). Bei der Entwicklung muss ich das Glas neu erstellen und den Server jedes Mal neu starten Ich ändere die CSS-, HTML- oder JS-Dateien. Es gibt keinen Hot-Swap. Dadurch wird die Entwicklung der Benutzeroberfläche wirklich verlangsamt.
Ich kann mir verschiedene schnelle Korrekturen vorstellen, wie statische Ressourcen aus einer anderen Domäne laden und von einer lokalen nginx
aus bedienen, und einige weitere Variationen wie diese, aber es gibt keine integrierte Option, wenn Sie mit IntelliJ/arbeiten. Finsternis?
Es gibt mehrere Möglichkeiten. Die Ausführung in einer IDE (vor allem bei aktiviertem Debugging) ist eine gute Möglichkeit, die Entwicklung durchzuführen (alle modernen IDEs ermöglichen das Nachladen statischer Ressourcen und normalerweise auch das Hotswapping von Java-Klassenänderungen). Spring Boot devtools ist eine kostengünstige Möglichkeit, einen großen Schub zu erzielen (fügen Sie ihn einfach in Ihren Klassenpfad ein). Es funktioniert, indem Sie Ihre Anwendung in einer heißen JVM neu starten, wenn Änderungen festgestellt werden. Es deaktiviert auch Dinge wie Thymeleaf-Caches, während es ausgeführt wird, sodass Sie nicht daran denken müssen, dies selbst zu tun. Sie können es mit einem externen css/js-Compilerprozess verwenden, wenn Sie diesen Code mit Tools höherer Ebene schreiben.
Spring Loaded wird nicht mehr empfohlen, wird aber wahrscheinlich noch verwendet. Fortschrittlichere agentenbasierte Tools funktionieren viel besser, wenn Sie Hot-Swapping ohne Verzögerung (z. B. JRebel) benötigen.
In der Datei docs finden Sie aktuelle Informationen
Sie können Hot-Swapping erhalten:
Weitere Informationen finden Sie in diesem Beitrag: http://blog.netgloo.com/2014/05/21/hot-swapping-in-spring-boot-with-Eclipse-sts/
wann möchten Sie im IntelliJ/Eclipse übernachten?
In IntelliJ 15.0, Windows 10, Windows XP:
1АГ 1: Добавлена следующая зависимость в pom (это упоминается повсеместно, нотолько
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
ШАГ 2: Затем из File-> Settings-> Build-Execution-Deployment -> Compiler либо из его суб-опция)
включить Make Project автоматически. Нажмите ок и закройте диалог
3АГ 3: УдерживатьShift+Ctrl+A(In den Warenkorb) In den Warenkorb legen Weitere Informationen finden Sie unter "Registrierung ...", unter "Registrierung". Weitere Informationen:
compiler.automake.allow.when.app.running
и включите его, нажмите кнопку Закрыть
4АГ 4: Перезапустите IDE
Разработано из этого источник
In Intellij kann ich dieses Verhalten bekommen. Wenn das Programm im Debug-Modus ausgeführt wird, wählen Sie Run > Reload Changed Classes
aus.
Hinweis: Nachdem Intellij die Aktion abgeschlossen hat, könnte Loaded classes are up to date. Nothing to reload
angezeigt werden. Dies ist irreführend, da die Klassenpfadressourcen tatsächlich DID neu geladen werden.
Meine Umgebung/Setup beinhaltet:
Intellij 13
Eingebetteter Tomcat
Run/Debug Konfiguration des Typs 'Application' (der nur eine Hauptklasse verwendet)
Statische HTML, CSS und JS (kein JSP)
Angenommen, Sie verwenden gradle; Verwenden Sie die folgende Konfiguration in Ihrem 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"
Führen Sie die Anwendung über die IDE oder die Befehlszeile mit dem Befehl gradle build run
aus.
Jetzt kann die IDE eine Verbindung zur Remote-JVM (an Port 7000) herstellen, auf der die Spring Boot-Anwendung ausgeführt wird. Es unterstützt auch das Hot Deployment statischer Dateien.
sie können sogar die Hauptklasse von intelliJ ausführen, wenn die Abhängigkeiten in der IDE ordnungsgemäß verwaltet werden. Die Hauptklasse ist die Klasse, die die Hauptmethode enthält, die SpringApplication.run("classpath:/applicationContext.xml", args);
aufruft.
Sie können auch JRebel verwenden - es lädt alle Änderungen (besser Hotswap), einschließlich Spring Beans, nach. Es lässt sich leicht in Intellij und Eclipse integrieren.
Ich weiß nicht, wie weit diese Art der Unterstützung geht, aber falls Sie Eclipse IDE verwenden (oder jemand, der dies liest): Starten der Spring-Boot-Anwendung über m2e im Debug-Modus ( Klicken Sie auf die Schaltfläche "Debug" und wählen Sie Ihr Maven Run-Konfigurationselement aus.
Es funktioniert für mich wie ein Zauber.
Mein Maven Run-Konfigurationselement ist wie folgt konfiguriert:
Ich bin benutze nicht weitere Bibliotheken (nicht einmal Spring-Boot-devtools).
Das ist es.
Ich empfehle Thymeleaf (Template Engine), jRebel für den persönlichen Entwickler . Thymeleaf-Vorlagendateien sind nur HTML-Ressourcen. Sie werden also unmittelbar nach dem Bearbeiten der Vorlagendateien geändert.
versuchen Sie es mit diesem Spring-Boot-Devtools-Tag in pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
Ab 1.3.0. (jetzt in Milestone 2) können Sie die Spring-Boot-Devtools dafür als leichtgewichtigen Ansatz verwenden - siehe docs oder this blogpost . Aktualisieren Sie einfach auf> = 1.3.0 . und fügen Sie der pom.xml Folgendes hinzu:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
Dann starten Sie Ihre SpringBootApplication mit Run As ... und schon geht es Ihnen gut.
Wenn Sie Maven verwenden, muss das Spring-Boot-Maven-Plugin in Ihrer pom.xml so aussehen, um den Hot-Swap zu erhalten:
<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>
und wenn Sie Thymeleaf verwenden, fügen Sie dies zu Ihren Anwendungseigenschaften hinzu:
spring.thymeleaf.cache=false
Denken Sie jedoch an etwas: Verwenden Sie dies nicht in Ihrer Produktionsumgebung.
So führen Sie einen Hot Swap in einer Springboot-Anwendung durch
Wenn Sie Gradle verwenden, schließen Sie Folgendes in die Abhängigkeit ein: compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.0.1.RELEASE'
& providedRuntime('org.springframework.boot:spring-boot-starter-Tomcat')
Inapplication.propertiesfügen Sie die Eigenschaft spring.devtools.restart.additional-paths=.
hinzu.
Erstellen Sie Gradle und führen Sie dann die Anwendung als bootRun aus
Die Anwendung ist bereit, bei Änderungen von Klassen einen Hot-Swap durchzuführen