SlideShare a Scribd company logo
1 of 67
Spring超入門
-Springと出会ってから1年半-
mi presento
■名前:内立良介(うちたてりょうすけ)
■あだ名:ジェンダ・フリ男
男性と女性の狭間(性格的な意味で)
■趣味:ファッション・パン屋巡り
靴に夢中・クロワッサン
■特技:バスケ
初めてから15年くらい?
■所属:Tagbangers
通称タグバン
Tagbangers
■場所:横浜市神奈川区
最寄りは横浜駅(徒歩15分)
■社則
業務時間・交通費・通勤費・給与の4つのみ
■飲み会
社長いじり
■勉強会:TAG BAR
初回からちょうど1年
AGENDA
1. 今回作ったWebアプリケーションの紹介
2. Springについて
3. ソースコードの解説
4. おまけ
1.今回作ったWebアプ
リケーションの紹介
利用者管理アプリ
• 新規登録機能
• 編集機能
• 一覧表示機能
• 削除機能
新規登録機能の
構成図
え?
ビジネスロジックって
よく聞くけど何だ?
訳すと、業務の論理?
ビジネスロジックは、データベースとユーザ
ーインタフェース間の情報のやりとりを制御
する手順といったようなものを指す(技術的
でない)用語である。(Wikipediaより)
一言で言うと
システム固有の
お仕事部分
具体例
• 画面から商品単価入力すると、税込でDBに登録す
る処理
• 電話番号が「1234567」ではなく「123-4567」の
フォーマットで入力されているかのチェックする処
理
よし、スッキリ!次
2.Springについて
Springって何?
• Javaのフレームワーク
• DI(依存性の注入)はとても重要
• さまざまなプロジェクト
え?(本日2回目)
DI(Dependency Injection):依存性の注入
意味わからん
DI
• DIとは、Springが管理しているインスタンスの
Beanをちょうだいとお願いしてDIコンテナから該
当箇所に注入してもらうこと
DIコンテナ
(Beanを管理している箱)
Bean
Bean Bean
Bean UserCreateController.java
Beanちょうだい
Bean
Bean:豆
え?
豆ってどういうこと?
調べて見ると、
コーヒー豆からきてるっぽ
い
Java(ジャワ)
• ジャワコーヒーはインドネシアのジャ
ワ島を産地とするコーヒー豆。(
WikiPediaより)
Beanも日本語訳は無
視
アドバイス
日本語訳に
とらわれ過ぎない
さらにもう1つ
アノテーション=注釈
って訳さない方がよい
コメントとの違い何?
ってなりました
経験談はこれくらいで
次
Spring Bootとは?
Spring Boot-1-
• Spring Frameworkでアプリケーションを簡単に作
るための仕組み
• 2014年4月にver1.0がリリースで1.4.2が最新
• XMLやJavaConfigでのBean定義、ログの設定など
が不要
Spring Boot-2-
• mavenに限って言えば、pom.xmlに書くだけで依存
関係を解決してくれる
• 良くも悪くもどういう動きをしているかよく知らな
くてもそれなりに堅牢なアプリは作れる
どれくらい簡単かと
言うと
Spring Initializrでぽちぽちすれば、
基本設定で構築されたプロジェク
トを作ることができる
Spring Initialize?
Spring Initializr
https://start.spring.io/
Spring Bootの
重要な仕組み
AutoConfigure
• Springが提供しているプロジェクトやOSSを利用す
る時に必要なBean定義をSpring Bootが自動で行っ
てくれる仕組みのこと
面倒なセットアップや設定がほとんど不要になる
pom.xmlに書いたものを
Bean登録する処理など
自動設定を有効にするには?
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
このクラスに@Configurationを付与する
でも、、、
@Configurationないじゃん!
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication
に含まれている
はず。でも、、、
@Configurationないじゃん!
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = @Filter(type =
FilterType.CUSTOM, classes = TypeExcludeFilter.class))
public @interface SpringBootApplication {
あやしい
見つけた!
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
@SpringBootApplicationは3
つのアノテーションを
1つにまとめたもの
@SpringBootApplication
• @EnableAutoConfiguration
• 自動設定を有効にする
• @ComponentScan
• このパッケージ配下で@Component、
@Service、@Controller、@RestController、
@Namedが付与されているクラスをDIコンテ
ナに登録する
• @SpringBootConfiguration
• このクラス自体をBean定義可能にする
自動設定が有効に
なるまでの流れ
1.DIコンテナ(ApplicationContext)作成
2.BeanFactory作成
3.spring.factories読込、
BeanDefinition取捨選択、並び替え
4.Bean登録
3.ソースコードの解説
pom.xml
•プロジェクトに関する情報が書かれている
•使いたいstarterやOSSの情報をかくとをレポジトリ
から取ってくる
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
...
</dependencies>
@Controller
•Controllerだよって教える
•これを書くとSpring Bootで自動設定の対象となって
Bean登録される
@RequestMapping
•create.htmlのactionで指定したパスに一致している
パスにマッピングされる
•Spring Boot 1.4からは@GetMappingや
@PostMapping、@DeleteMappingなども登場して
いる
@GetMapping = @RequestMapping(method =
RequestMethod.GET)
@Validated
•formの入力値チェックをしてもらいたいときにつけ
る
@PostMapping
public String save(
@Validated @ModelAttribute(name =
FORM_MODEL_KEY) UserCreateForm form,
BindingResult errors,
RedirectAttributes redirectAttributes) {
formの中にformがある
ときのエラーチェック
UserCreateForm.java
@Getter
@Setter
public class UserCreateForm implements Serializable {
@NotNull
private String name;
private Integer age;
@NotNull
private Gender gender;
@Valid
private AddressForm address;
public UserCreateRequest toUserCreateRequest() {
return new UserCreateRequest(getName(), getAge(), getGender(),
Address.generateAddress(getAddress()));
}
}
@ValidをつけるとFormのなかの
Formの入力値チェックをする
Springに思う事
神ってる
おわり

More Related Content

What's hot

さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Spring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web ServiceSpring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web ServiceWataruOhno
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと心 谷本
 
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_cccPivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_cccMasatoshi Tada
 
Springを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしようSpringを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしよう土岐 孝平
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話Ryosuke Uchitate
 
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービューMasatoshi Tada
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るGo Miyasaka
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門minazou67
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜Yoshiki Nakagawa
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Ryosuke Uchitate
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?土岐 孝平
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャーssuser070fa9
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門Asami Abe
 

What's hot (20)

さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
Spring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web ServiceSpring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web Service
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
 
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_cccPivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
 
Springを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしようSpringを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしよう
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
 
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
 

Viewers also liked

ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てRyosuke Uchitate
 
業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日Mitsuru Ogawa
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjugYuji Kubota
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜aha_oretama
 
サーバサイド Kotlin
サーバサイド Kotlinサーバサイド Kotlin
サーバサイド KotlinHiroki Ohtani
 
Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜Youtarou TAKAHASHI
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 

Viewers also liked (7)

ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
 
業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
 
サーバサイド Kotlin
サーバサイド Kotlinサーバサイド Kotlin
サーバサイド Kotlin
 
Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 

More from Ryosuke Uchitate

パラレルキャリアがもたらす相乗効果
パラレルキャリアがもたらす相乗効果パラレルキャリアがもたらす相乗効果
パラレルキャリアがもたらす相乗効果Ryosuke Uchitate
 
Micrometerでメトリクスを収集してAmazon CloudWatchで可視化
Micrometerでメトリクスを収集してAmazon CloudWatchで可視化Micrometerでメトリクスを収集してAmazon CloudWatchで可視化
Micrometerでメトリクスを収集してAmazon CloudWatchで可視化Ryosuke Uchitate
 
オレはIntelliJ IDEAをこう使っている
 オレはIntelliJ IDEAをこう使っている オレはIntelliJ IDEAをこう使っている
オレはIntelliJ IDEAをこう使っているRyosuke Uchitate
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Ryosuke Uchitate
 
春だしBannerで遊バナいか?
春だしBannerで遊バナいか?春だしBannerで遊バナいか?
春だしBannerで遊バナいか?Ryosuke Uchitate
 
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot StarterSpring starterによるSpring Boot Starter
Spring starterによるSpring Boot StarterRyosuke Uchitate
 

More from Ryosuke Uchitate (6)

パラレルキャリアがもたらす相乗効果
パラレルキャリアがもたらす相乗効果パラレルキャリアがもたらす相乗効果
パラレルキャリアがもたらす相乗効果
 
Micrometerでメトリクスを収集してAmazon CloudWatchで可視化
Micrometerでメトリクスを収集してAmazon CloudWatchで可視化Micrometerでメトリクスを収集してAmazon CloudWatchで可視化
Micrometerでメトリクスを収集してAmazon CloudWatchで可視化
 
オレはIntelliJ IDEAをこう使っている
 オレはIntelliJ IDEAをこう使っている オレはIntelliJ IDEAをこう使っている
オレはIntelliJ IDEAをこう使っている
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
 
春だしBannerで遊バナいか?
春だしBannerで遊バナいか?春だしBannerで遊バナいか?
春だしBannerで遊バナいか?
 
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot StarterSpring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
 

Spring超入門-Springと出会ってから1年半-

Editor's Notes

  1. ちなみにTagbangersご存知のかた?
  2. こんな感じで話します。その他、Springを学ぶときに立ちはだかった壁を紹介します。
  3. 基本的なCRUDアプリケーションを実装することが多いかな?というのと、わかりやすさのためにこのようなアプリケーションにしました。 今回は、新規登録機能に絞ってお話しします。実際に実行してみます!
  4. 新規登録機能の構成図について説明します。 このアプリケーションは、MVCパターンで実装しています。 MVCは、Model、View、Controllerの略でModelがビジネスロジック、ViewがUI、ControllerがModelとViewの制御の役割をもっています。 ここでは、UserCreateFormがModel、create.htmlとsearch.htmlがView、UserCreateControllerがControllerをあらわしています。 create.htmlで入力して保存ボタンを押すと、name属性と同じ名前のFormのフィールドに値が格納されUserCreateControllerに処理が移ります。 UserCreateControllerからUserServiceに処理が移りDBに保存し、再度Controllerに処理が移り、search.htmlにリダイレクトしています。 詳しくは後ほど説明します。
  5. 一言で言うと、、、、
  6. Springのコア機能となっているDIとAOPはとても重要です。 さまざまなプロジェクトがあり、どのような時に使うか3つだけざっくり紹介します。 まず、Spring Frameworkは、Webアプリケーションの開発する時に使う。 次に、Spring Dataは、データベースにアクセスする時に使う。 最後に、Spring Securityは、ログイン画面作りたい時とかあるページを見る権限持ってるかチェックする時に使う。 他にもプロジェクトがあるのでぜひ調べてみてください。
  7. よく耳にするSpring Bootとは何でしょうか?
  8. バージョン1.4からSpring 4.3をベースに作られています。 Javaでアプリケーションを作るのは面倒っていうイメージが覆るほど簡単に始められます。
  9. Spring Initializrから始めると手取り早くアプリケーションを作れます。 ビルドツール・Spring Bootのバージョン等を選んでプロジェクト名などを入力し、 「Generate Project」を押下します。 すると、入力した項目が設定された状態のプロジェクトのzipファイルが落ちてきます。 これをIDEにインポートするだけです。
  10. AutoConfigureは、Spring Bootにおける超目玉の仕組みです。 これは、Spring Bootが行う自動設定の仕組みであり、Bootの特徴の1つと言えるので重要だと思いました。
  11. Spring Initializrを利用してプロジェクトを作るとこのようなクラスが作成されます。 runメソッドの第1引数に@Configurationが付与されたconfigurationクラスを渡します。 これは、DIコンテナを生成する際に使用するクラスです。
  12. これは、@SpringBootApplicationのインターフェースです。ここにも@Configurationないじゃん!
  13. これは、@SpringBootConfigurationのインターフェースです。やっと見つけました!つまり、どこかに内包されていればOKです。
  14. 先ほども述べましたように
  15. ちなみにこの@SpringBootApplicationは、アプリケーションのエントリポイントのクラスに付与します。
  16. 冒頭に説明したBeanを管理するためのものです。
  17. Bean定義ファイルを読込、Beanを生成するためのものです。
  18. spring.factoriesに書けば、自動設定の対象となる。
  19. これが、Spring Bootで自動設定が有効になるまでのおおまかな流れです。後ほど、起動するとどれくらい数のBeanが登録されるのか見て見ましょう
  20. これまでの説明を踏まえてソースコードを見て見ましょう。このプロジェクトもSpring Initializrを利用して作成したものです。
  21. UseCreateFormは、中にさらにAddressFormを持っています。 Formの中のFormのフィールドの入力値チェックをしたってときにつけるアノテーションが@Validです。