Java hotswap Spring Boot

Salut, a reusit cineva sa foloseasca hotswap/hot code replacement in java cu spring boot?
Din ce am citit pe forumuri se foloseste DCVEM si hotswap plus ceva setari in IDE(eu folosesc Intellij Community) dar de fiecare daca cand modific o metoda se restarteaza tot serverul(in loguri apare bannerul cu Spring de 2 ori).
Ma intereseaza hotswap pentru fisierele .java, nu cele statice.
Multumesc.

2 Likes

Poate este o idee. In eclipse parca mergea hot swap, dar restarta si server-ul. Daca afii mai multe detalii, sa scrii in topic

In cazul meu este vorba de Tomcat embedded in framework. In cazul tau pare sa fie vorba de Tomcat instalat separat. Sper ca nu gresesc.
Daca gasesc informatii utile le pun aici, sigur.

Am gasit ceva care pare sa functioneze cum imi doresc:

  1. in proiectul de Spring NU trebuie adaugata dependinta spring boot devtools
  1. trebuie instalat DCEVM , eu folosesc versiunea pentru java 181 de aici
    http://dcevm.github.io/
    $ java -version -XXaltjvm=dcevm
    java version “1.8.0_181”
    Java™ SE Runtime Environment (build 1.8.0_181-b13)
    Dynamic Code Evolution 64-Bit Server VM (build 25.71-b01-dcevmlight-26, mixed mode)

  2. in IntelijIDEA in settings cauti setarea HotSwapAgent(probabil trebuie instalat un plugin numele asta) si bifat Enable HotSwapAgent in all configurations(probabil se poate seta si la nivel de proiect

  3. Pornesti aplicatia spring in Debug mode(spring-boot:run)

5.Modifici o clasa si Build -> Build project (ctrl+F9)

  1. Apare un mesaj cu clasele care se modifica
    Metoda asta functioneaza cand adaugi o metoda sau modific corpul la una existenta

-asta e tot, ma mira ca nici un programator java nu foloseste metoda asta.

Incerc sa gasesc o solutie si pentru Visual Studio code, momentan nu stiu cum sa pornesc aplicatia cu DCEVM, probabil trebuie ceva asemanator cu
-XXaltjvm=dcevm -javaagent:{HotAgent path}/hotswap-agent-1.3.0.jar=autoHotswap=true

1 Like

Am gasit o solutie cu care sa fac swap la modificarile din fisierele .java fara sa faci build la project, doar salvezi fisierul(solutia este pentru maven).
Trebuie sa pornesti proiectul din linie de comanda cu:
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-XXaltjvm=dcevm -javaagent:C:\Users\Nipu.IdeaIC2019.2\config\plugins\hotswap-agent-intellij-plugin\lib\agent\hotswap-agent-1.3.0.jar=autoHotswap=true"

Nu trebuie sa folosesti un IDE, a mers si cu Visual Studio Code.

Aici eu folosesc locatia pentru hotswap-agent de la Intellij, probabil poti sa downloadezi separat hotswap-agent si pui locatia.
Am testat pe un proiect demo de baza, fara conectare la baza de date, doar cu un controller si modificarile se vad instant.
Sper sa ajute pe cineva.
Noroc in tot si’n toate !

1 Like