自分の勉強用。
#SpringBootってなんだろう
- 各種ライブラリやミドルウェア組み合わせの共通化・最適化の道具なイメージ
- SpringFrameworkの設定ファイルの複雑さをできる限り排除、少しの設定でアプリの開発・起動実行できるようにするよ
- SpringFramworkとイコールではない
- SpringFrameworkはSpringプロジェクトのベースとなる([DI:依存性の注入]とか[AOP:アスペクト指向プログラミング]とか)
- SpringFramworkはニーズに応じてプロジェクトを増やしてきた(SpringBatchとかSpringDataとか)
- 「Spring」=「SpringFramework」として使う方が多いと思う
- SpringFrameworkは基本XMLで設定を定義し外部ファイル化
- 最近はXMLではなくJavaソース本体に設定を記載するスタイルの方が主流?
- 大きなサービスになると設定ファイルが肥大化してなかなか大変みたい
- Webコンテナをjarに含めることができる
- Tomcatを内包した形で提供できるみたい
- warファイルをとしてエクスポートし通常のサーバーにのせることも可能
- SpringBootでは目的のシステムを実現する設定やライブラリの依存関係を「定義セット(Starter)」として管理
- これまで通りMavenやGradleを使うけど、自分で設定しないで済むよう設定ファイルを用意してくれているイメージ
- 公式に多くのStarterがあり。目的に応じてカスタマイズしていけばOK
- AutoConfigureの仕組みで、Bean定義を自動で定義してくれるらしい
- アノテーションで実現できること多々
- [?]純粋なSpringでも使えるのかな→使えそう
- AutoConfigureを実現する際は
「 @AutoConfigureAfter、@AutoConfigureBefore、@AutoConfigureOrder」など使うみたい
開発環境について
- STS(Spring Tool Suite)を使用するのが一般的。簡単なのかな?
- STSの日本語化はEclipseを日本語化するPleiades日本語化プラグインを利用できる
- Eclipseにプラグインを入れて開発するのもよさそう!
ビルドツール
- Mavenを使おうと思います
- AntやGradleと同じようなツール
- [?]"SpringBootならMavenでいい"って見かけるけど、理由がわかってないよ
- C言語をビルドする際のmakeみたいな
- Mabenのビルド設定は「pom.xml」に
やっとモノづくりをはじめるよ
-
前提環境
Windows 10 64bit -
Pleiades All in One ダウンロード
http://mergedoc.osdn.jp/
新しめのやつで -
環境変数設定
[参考]https://www.javadrive.jp/start/install/index4.html
今回はPleiadesのJava8を使うよ
追記)深く考えず環境変数設定までしたけど、今回の内容ならやらなくてよかったね -
Eclipseに必要なプラグインを入れる
STSを使うなら不要かもしれないけど、Eclipseベースで作るのでプラグインを入れるよ
[ヘルプ]>[Eclipseマーケットプレース]で「STS」を検索
-
プロジェクト作成
[ファイル]>[新規]>[その他]>Spring Starter Project
サービスURL「https://start.spring.io」
名前「springbootdemo」
型「Maven」
パッケージング「jar」
Javaバージョン「8」
言語「Java」
グループ「com.bootsample」
成果物「springbootdemo」
バージョン「0.0.1-SNAPSHOT」←デフォルトの
説明:「SpringBoot Sample Project」
パッケージ「com.springbootdemo」
↓[次へ]を押したあと
-
ビルドの設定的な
プロジェクト上で右クリックして以下の操作をしてください
・Maven→プロジェクトの更新→OK
・実行→Maven install
(インストールされていく... -
コントローラーの作成
パッケージ「com.springbootdemo」を右クリック
[新規]>[クラス]
で、新しいクラスを作成
-
起動
プロジェクトを右クリック
[実行]>[SpringBootApp]をクリック
アプリケーションが起動
http://localhost:8080/
へアクセスすると、以下が表示されるはず
とりあえずここまで。
※日本語化前と後でメモしたので、メニュー名がその時々によっていちょっと違うかも