Spring Boot入門
Spring Bootで最小アプリケーションが動くまでの設定についてまとめる。
以下の2種類について記載する。
- Spring Bootで実行可能jarの作成
- Spring BootでAPサーバにデプロイ可能なwarの作成
上記は両方HTTP GETするとHelloが返ってくる簡単たRESTアプリ。
Spring Bootで実行可能jarの作成
以下を作成する。
- pom.xml
- Maven設定ファイル/POM
- POMのdependencyに
spring-boot-starter-*
が含まれること - POMのbuild -> pluginsに
spring-boot-maven-plugin
が含まれることmvn package
実行時に適切に実行可能jarを作成してくれる
- src/main/java/com/pepese/sample/Application.java
- Spring Bootアプリケーション起動クラス
@SpringBootApplication
アノテーションを付与すること@Configuration
、@EnableAutoConfiguration
、@ComponentScan
をまとめたもの
- src/main/java/com/pepese/sample/config/AppConfig.java
- Spring設定クラス
- DIやAOPなどの設定に使用する
@Configuration
アノテーションを付与すること
- Spring設定クラス
- src/main/java/com/pepese/sample/config/WebMvcConfig.java
- Spring MVC設定クラス
- コンテンツネゴシエーションなどSpring MVCの
DispatcherServlet
に関する設定に使用する
- コンテンツネゴシエーションなどSpring MVCの
WebMvcConfigurerAdapter
が継承されていること@Configuration
アノテーションを付与すること- Spring Bootの場合、
@EnableWebMvc
を付与する必要はない- Spring Bootを利用しないSpring MVCアプリケーションを作成する場合には付与する
- Spring MVC設定クラス
- src/main/java/com/pepese/sample/controller/HelloController.java
- 動作確認用のコントローラクラス
- src/main/java/com/pepese/sample/service/HelloService.java
- DIなどの動作確認用のサービスクラス
pom.xml
Application.java
AppConfig.java
WebMvcConfig.java
HelloController.java
HelloService.java
実行
以下の2通り。
mvn spring-boot:run
で実行してhttp://localhost:8080/
へアクセスmvn package
でビルドしてjava -jar target/springboot-sample-jar-0.0.1-SNAPSHOT.jar
で実行してhttp://localhost:8080/
へアクセス
Spring BootでAPサーバにデプロイ可能なwarの作成
意味あんの?なツッコミは無しで。
準備されたTomcatにデプロイしないといけないルールなプロジェクトは存在するんです。
以下を作成する。「Spring Bootで実行可能jarの作成」と異なるファイルだけ記載する。
- pom.xml (変更)
- Maven設定ファイル/POM
- POMのdependencyに
spring-boot-starter-*
が含まれること - POMのbuild -> pluginsに
spring-boot-maven-plugin
が含まれることmvn package
実行時に適切にデプロイ可能warを作成してくれる
- POMのpackagingをwarにすること
- POMのspring-boot-starter-tomcatの組み込み系APサーバのscopeをprovidedにすること
- tomcatに限らずjetty等組み込み系APサーバは全て
- src/main/java/com/pepese/sample/ServletInitializer.java (追加)
- web.xmlのSpring Boot版
SpringBootServletInitializer
が継承されていること- web.xmlのSpring MVC版である
WebApplicationInitializer
を継承している
- web.xmlのSpring MVC版である
configure
メソッドをオーバーライドし、Spring Bootアプリケーション起動クラスをロードすること
pom.xml
ServletInitializer.java
実行
以下の2通り。
mvn spring-boot:run
で実行してhttp://localhost:8080/
へアクセスmvn package
でビルドしてできたwarをTomcatにデプロイしてhttp://localhost:8080/springboot-sample-war/
へアクセス- コンテキストパスは自分で調整して
補足
SpringBootServletInitializer
はSpring Bootの起動クラスに継承して作成してもよい。下記の通り。
package com.pepese.sample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.web.SpringBootServletInitializer; @SpringBootApplication public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } }