2015-09-17 8 views
5

私はスプリングブート1.3.0.M5を使用しており、devtoolsを利用しようとしています。これにより、開発中にアプリケーションを変更し、起動するとアプリケーションがリロードされます。私はこのデモがJavaとMav​​enを使ってSTSで動作するのを見てきました。スプリングブートdevtools IntelliJ

私はGroovy & IntelliJ 14.1でGradleを使用しようとしていますが、いくつか問題があります。まずはGradle Buildの依存関係です。

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

私は、アプリケーションを実行してhttp://localhost:8080を訪問し、画面に文字列の印刷を見ることができるよ「/」

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

} 

のマッピングとコントローラを作成しました。ファイルを変更すると、IntelliJは変更時にコンパイルされないため、何も起こりません。あなたがBuild> Make Projectに行くのであれば、コンソールのリロードでSpring Bootが見えます。これは動作しているようですが、ルートURLに戻った場合、コントローラがない場合には基本的に次のようなエラーが表示されます。あなたがフォールバックとして これを見ているよう

ホワイトレーベルのエラーページ

このアプリケーションは、/エラーのための明示的なマッピングを持っていません。

Thu Sep 17 10:43:25 EDT 2015予期しないエラーが発生しました(type = Not Found、status = 404)。メッセージがありません

私はリロードが正しく動作していない理由を知っていますか?

+0

代わりに 'gradle classes'を実行すると機能しますか? – cfrick

+0

@cfrick同じ問題はありません。春のブートがリロードされ、私は白いラベルのエラーを取得します。 – cfaddict

+0

これを 'gradle bootRun'で実行しますか? – cfrick

答えて

5

私は最近同じ問題を抱えていました。問題はdevtoolsが変更を傍受する方法です。デフォルトでは、コンパイルが完了するまで1秒間待機します。クラスパスがクラスパス上に存在しない場合、devtoolsはクラスが削除されたとみなし、それなしでアプリケーションを再起動します。

私のマシンでGroovyからコンパイルまでの処理時間は、ほとんどの場合平均3秒かかります。したがって、再起動中にクラスが削除されます。

この問題の解決策は、(私のために4000が正常に動作します)1000年より大きい値にapplication.propertiesファイル内spring.devtools.restart.pollIntervalプロパティを設定することです。

0

スキャンするパッケージを正確に指定しても問題ありません。例:

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

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