2015-09-17 26 views
5

Używam Spring Boot 1.3.0.M5 i staram się korzystać z devtools. Umożliwia to wprowadzanie zmian w aplikacji podczas programowania, a rozruch spowoduje przeładowanie aplikacji. Widziałem tę pracę demo w STS przy użyciu Java i Maven.Spring Boot devtools IntelliJ

Próbuję użyć Groovy & Gradle w IntelliJ 14.1 i mam pewne problemy. Najpierw tutaj są moje zależności od 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") 
} 

stworzyłem kontroler z mapowaniem dla „/”

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!" 
    } 

} 

jestem w stanie uruchomić aplikację i odwiedź http://localhost:8080 i zobaczyć odcisk ciąg do ekranu. Jeśli dokonam zmiany w pliku nic się nie dzieje, ponieważ IntelliJ nie kompiluje zmian. Jeśli przejdziesz do Build> Make Project, chociaż widzę Spring Boot w przeładowaniu konsoli. Wydaje się, że to działa, ale jeśli wrócę do głównego adresu URL, otrzymuję następujący błąd, który jest w zasadzie tym, co zobaczyłbyś, gdybyś nie miał kontrolerów w miejscu.

Whitelabel Error Page

Ta aplikacja nie ma wyraźnej mapowanie/błędu, więc widzisz to jako awaryjnej.

Thu Sep 17 10:43:25 EDT 2015 Wystąpił nieoczekiwany błąd (type = Not Found, status = 404). Brak wiadomości

Ktoś wie, dlaczego ponowne ładowanie nie działa poprawnie?

+0

czy to działa, jeśli zamiast tego uruchomisz 'gradle classes'? – cfrick

+0

@ffrick nie ma tego samego problemu. Spring Boot przeładowuje się i pojawia się błąd białej etykiety. – cfaddict

+0

i uruchomisz to z 'gradle bootRun'? – cfrick

Odpowiedz

5

Niedawno miałem ten sam problem. Problem polega na tym, że devtools przechwytuje zmiany. Domyślnie czeka 1 sekundę na zakończenie kompilacji. Jeśli klasa nie istnieje w ścieżce klas po tym czasie, devtools uważa, że ​​klasa została usunięta i zrestartuje aplikację bez niej.

Zazwyczaj zajmuje to średnio 3 sekundy, aby zakończyć proces kompilacji na moim komputerze. Dlatego klasa jest usuwana podczas restartu.

Rozwiązaniem tego problemu jest ustawienie spring.devtools.restart.pollInterval nieruchomość w application.properties plik na wartość większą niż 1000 (dla mnie 4000 działa bez zarzutu).

0

To będzie ok, jeśli podasz dokładny pakiet do skanowania. Takich jak:

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

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