2015-09-17 18 views
5

Sto usando Spring Boot 1.3.0.M5 e sto cercando di sfruttare i devtools. Ciò consente di apportare modifiche all'applicazione mentre è in fase di sviluppo e l'avvio ricarica la tua applicazione. Ho visto questa demo lavorare in STS usando Java e Maven.Spring Boot devtools IntelliJ

Sto cercando di utilizzare Groovy & Gradle in IntelliJ 14.1 e ho alcuni problemi. Innanzitutto ecco le mie dipendenze di Build Gradle.

dependencies { 
    compile("org.springframework.boot:spring-boot-devtools") 
    compile("org.springframework.boot:spring-boot-starter-web") 
    compile("org.codehaus.groovy:groovy") 
    testCompile("org.springframework.boot:spring-boot-starter-test") 
} 

ho creato un controller con una mappatura per "/"

package demo 

import org.springframework.web.bind.annotation.RequestMapping 
import org.springframework.web.bind.annotation.RestController 

@RestController 
class HomeController { 

    @RequestMapping("/") 
    public String home(){ 
     "Hello, SpringOne 2GX!" 
    } 

} 

Sono in grado di eseguire l'applicazione e visitare http://localhost:8080 e vedere la stampa stringa per lo schermo. Se apporto una modifica al file, non succede niente perché IntelliJ non si occupa delle modifiche. Se si va su Build> Make Project, tuttavia, è possibile vedere Spring Boot nella console di ricarica. Quindi sembra funzionare, ma se torno all'URL della radice ottengo il seguente errore che è fondamentalmente quello che vedresti se non avessi controller in posizione.

Whitelabel errore Pagina

Questa applicazione non ha mapping esplicito per/errore, in modo che state vedendo questo come un ripiego.

gio 17 settembre 10:43:25 EDT 2015 Si è verificato un errore imprevisto (tipo = non Trovato, stato = 404). Nessun messaggio disponibile

Qualcuno sa perché il reload non funziona correttamente per me?

+0

funziona se si esegue una 'classi gradle' invece? – cfrick

+0

@cfrick nessuno stesso problema. Spring Boot si ricarica e ottengo l'errore dell'etichetta bianca. – cfaddict

+0

e lo usi con 'gradle bootRun'? – cfrick

risposta

5

Ho avuto lo stesso problema di recente. Il problema è nel modo in cui devtools intercetta i cambiamenti. Di default attende 1 secondo per la compilazione per essere completata. Se la classe non esiste su classpath dopo tale orario, allora devtools considera la classe cancellata e riavvia l'applicazione senza di essa.

La maggior parte delle volte ci vogliono 3 secondi in media per Groovy per completare il processo di compilazione sulla mia macchina. Pertanto la classe viene rimossa durante il riavvio.

La soluzione per questo problema è quello di impostare spring.devtools.restart.pollInterval proprietà in application.properties file valore maggiore di 1000 (4000 per me funziona bene).

0

Sarà ok se si specifica il pacchetto esatto da scansionare. Ad esempio:

@ComponentScan(basePackages = "com.lsj.web") 
@EnableAutoConfiguration 
public class PlatformApplication { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(PlatformApplication.class, args); 
    } 
}