一般に、Servlet環境での開発は、プログラムを変更したら、再デプロイをして動作を確認します。しかし再デプロイは時間がかかるため開発効率がよくありません。このため再デプロイすることなくプログラムの追加・変更を適用することができる「hot swap」や「hot deploy」と呼ばれる手法が使われることがあります。
Spring-LoadedはSpringアプリケーションのhot deployを実現するライブラリです。Spring-Loadedを利用するにはgradle.buildを次のようにします(参考: 67.6.1 Configuring Spring Loaded for use with Gradle and IntelliJ)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.7.RELEASE") classpath("org.springframework:springloaded:1.2.0.RELEASE") } } apply plugin: 'java' apply plugin: 'idea' apply plugin: 'spring-boot' sourceCompatibility = 1.8 version = '1.0' idea { module { inheritOutputDirs = false outputDir = file("$buildDir/classes/main/") } } repositories { mavenCentral() } dependencies { compile("org.springframework.boot:spring-boot-starter-web") { exclude module: "spring-boot-starter-tomcat" } compile("org.springframework.boot:spring-boot-starter-jetty") compile("org.springframework.boot:spring-boot-starter-thymeleaf") compile("org.springframework.boot:spring-boot-starter-data-jpa") compile("com.h2database:h2:1.4.181") testCompile group: 'junit', name: 'junit', version: '4.11' } |
- 7行目: Spring-Loadedの利用を指定する。
- 12行目: gradleのideaプラグインを利用する。
- 18〜23行目: IDEAによる出力をgradleの出力先に合わせる。
Intellijの設定では、「Make Project Automatically」をonにします。
これによりbootRunで実行中にプログラムを書き直すと起動中のプログラムも修正されます。