SpringBootでプログラミングの習慣を身につける


# はじめに

SpringBootはとっつきやすいJavaのフレームワークです。<br>
Strutsの導入よりも楽なので指導しやすそう。<br>
実装で行き詰まっても流行りなので大体検索で出てくる。<br>
学習コストはそれなりにかかるが、とても楽しいThymeleafが使用できる！<br>
導入　Part2まで進めば楽しいコーディング生活が送れる。

# 導入 Part1

「SpringBootの開発環境を構築しよう！」をテーマにするならば下記の用意をする。

ツール    | ツール名
:----- | :------------
IDEA   | IntelliJ
ビルド  | Gradle 3.x
JDK    | OracleJDK 1.8

IntelliJには下記を追加しておく。

プラグイン            | 内容
:--------------- | :----------------
lombok           | getter/setter等の補完
resources_jp.jar | 日本語化

JDKとIntelliJのインストール完了までに１時間<br>
Gradleのインストール、IntelliJまでへのセッティングに１時間<br>
IntelliJのカスタマイズに１時間<br>
合計３時間といったところでしょうか。

# spring-boot-starter
| name
| :-------------------------------------
spring-boot-starter-activemq           |
spring-boot-starter-actuator           |
spring-boot-starter-amqp               |
spring-boot-starter-aop                |
spring-boot-starter-artemis            |
spring-boot-starter-batch              |
spring-boot-starter-cache              |
spring-boot-starter-cloud-connectors   |
spring-boot-starter-data-cassandra     |
spring-boot-starter-data-couchbase     |
spring-boot-starter-data-elasticsearch |
spring-boot-starter-data-gemfire       |
spring-boot-starter-data-jpa           |
spring-boot-starter-data-mongodb       |
spring-boot-starter-data-neo4j         |
spring-boot-starter-data-redis         |
spring-boot-starter-data-rest          |
spring-boot-starter-data-solr          |
spring-boot-starter-freemarker         |
spring-boot-starter-groovy-templates   |
spring-boot-starter-hateoas            |
spring-boot-starter-hornetq            |
spring-boot-starter-integration        |
spring-boot-starter-jdbc               |
spring-boot-starter-jersey             |
spring-boot-starter-jetty              |
spring-boot-starter-jooq               |
spring-boot-starter-jta-atomikos       |
spring-boot-starter-jta-bitronix       |
spring-boot-starter-jta-narayana       |
spring-boot-starter-log4j2             |
spring-boot-starter-logging            |
spring-boot-starter-mail               |
spring-boot-starter-mobile             |
spring-boot-starter-mustache           |
spring-boot-starter-parent             |
spring-boot-starter-redis              |
spring-boot-starter-remote-shell       |
spring-boot-starter-security           |
spring-boot-starter-social-facebook    |
spring-boot-starter-social-linkedin    |
spring-boot-starter-social-twitter     |
spring-boot-starter-test               |
spring-boot-starter-thymeleaf          |
spring-boot-starter-tomcat             |
spring-boot-starter-undertow           |
spring-boot-starter-validation         |
spring-boot-starter-velocity           |
spring-boot-starter-web-services       |
spring-boot-starter-web                |
spring-boot-starter-websocket          |
spring-boot-starter-ws                 |

# 導入 Part2

[spring initializr](https://start.spring.io "spring initializr")
spring initializrでSpringBootのスケルトンプロジェクトを生成する。

ウェブアプリケーションの作成を仮定するならば、以下を設定する。

| name
| :-------------------------------------
spring-boot-starter-aop               |
spring-boot-starter-data-jpa　　　　　　|
spring-boot-starter-logging           |
spring-boot-starter-tomcat            |
spring-boot-starter-thymeleaf         |
spring-boot-starter-web               |
spring-boot-starter-test              |

スケルトンプロジェクトを作成し、IntelliJに取り込み
Gradleから起動できればOK

# 導入 Part3

ソースのバージョン管理を行う。
PCにSvn,Gitを導入するか、クラウドサービスを利用する。
Githubがおすすめ。

# 導入 Part4

CIするならJenkinsでも導入してみる。
Githubへのコミットを検知し、自動でビルド＆テストまで実行できれば保守が楽になる。
build.gradleにはそれぞれのタスクを、
Jenkinsのジョブとパイプラインでタスクをつなぎ合わせるイメージである。

# 実践　Part1

1.HelloWorldをネットで調べてコンソールとhtmlの二つで表示してみる。
2.Controllerとhtmlを自作して、とりあえず遷移してみる。
3.htmlからgetメソッド＆postメソッドを使い分け、Controllerに正常遷移できるか確認してみる。

# 実践　Part2
1.フォームbeanを自作し、htmlからControllerにリクエストする。
2.thymeleafを活用し、Controllerからフォームbeanを受け取り、html上に表示してみる。
3.Controllerクラスの内部処理をServiceクラスに移動する。