Springおじさんにならなくては
お仕事でSpringを使っていく風潮が出てきたので、設定とかアノテーションとかをさらっておこうと思います。先輩がよく言っているので、僕もbootしてみます。
前回まで
依存関係
boot用のライブラリが配布されるのでそちらをペタリ。view用のテンプレートとしてthymeleafをおすすめされているようなので、こちらもペタリ。
build.gradle
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.3.6.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version: '1.3.6.RELEASE'
プラグイン
SpringBoot用の便利なgradleプラグインがあるみたいだったので、ありがたく使わせて頂きます。
jar作って、java -jar hoge.jarする地味に面倒な作業がこれでサボれるぞ!
build.gradle
buildscript {
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE")
}
repositories {
mavenCentral()
}
}
apply plugin: 'spring-boot'
メインクラス
Application.java
@SpringBootApplication // equivalent to using @Configuration, @EnableAutoConfiguration and @ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- Application
- warをtomcatさんに渡すのではなく、単一の実行ファイルを作るためmainメソッドを定義します。
- mainメソッドがあるクラスの場所は特に設定しなくていいみたい。上述のspring-bootプラグインのお陰かな。
-
- SpringBoot使うならとりあえず貼っとけらしいアノテーション
- @Configuration, @EnableAutoConfiguration, @ComponentScanを貼ったことと同等のものらしい
-
- SpringBootの基本設定等々をよしなにやってくれるらしい
- 具体的な項目はまだ分からない、、、
-
- このクラス以下のパッケージから@Contorollerを探してくれるっぽい!
とりあえず実行
$ gradle bootRun
(・8・)おー!
テンプレートファイル
index.html
<html lang="jp" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8"/>
</head>
<body>
<h2>すぷりんぐぶーと!</h2>
<span th:text="${voice}"></span>(・8・)!
</body>
</html>
- index.html
- thymeleaf(SpringBoot?)の場合、テンプレートファイルは/resources/templates以下に置いてくようです
- th:text="${voice}"
- viewを返すControllerクラスのメソッドが扱うModelの変数はこの要素から取得する
- ${}だけで取得できたJSPに比べるとちと面倒かな、、、
- thymeleaf
- せっかくのテンプレートエンジンですが、まだよく知らない
とりあえず実行
$ gradle bootRun
やったー!(・8・)
少し困ったこと
- jacksonの依存関係をgradleに書いていると、内蔵tomcatが起動しない
- spring-webmvcパッケージは大体のSpring以外の依存関係がoptionalで必要であれば各自解決をするというスタイルでしたが、spring-boot-starter-webはjacksonが最初から引っ張られて来るようです。