Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SpringBoot勉強会用の資料
Search
Yudai
July 03, 2024
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SpringBoot勉強会用の資料
頑張って作りました。
間違ってたら指摘してください
Yudai
July 03, 2024
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
WCS-LA-2024
lcolladotor
0
890
Mind Mapping
helmedeiros
1
400
The Cult of Friendly URLs
andyhume
79
7k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
Transcript
Spring Boot勉強会
自己紹介 情報学部知能システムコース3年 KINDAI Info-Tech HUB 役員 最近はバックエンドをがんばってる
Spring Bootって?
Spring Bootって?
フレームワークの集合体 https://spring.io/projects/spring-framework (公式) https://spring.pleiades.io/projects/spring-framework (⽇本語)
Spring Boot 今からは一旦触ってみるよ〜
確認! • Extension Pack for Java • Spring Boot Extension
Pack • Gradle for Java
実際にやってみる • MacBookの方 • Command(⌘) + Shift(⇧) + P •
Windows の方 • Ctrl + Shift(⇧) + P 1. Spring Initializrと入力 2. Spring Initializr: Create a Gradle Project…を選択 ※ Create a Maven Projectもでますがこっちは違う! 続いて
続き 1. Spring Bootのバージョンを選択 → 今回は3.2.7 2. 言語を選択 → Javaを選択
3. Group Idの入力 → 変えてもいいけどとりあえずそのままcom.exampleで 4. Artifact Idの入力 → 変えてもいいよ! とりあえずここはdemoで進めます。 5. パッケージのタイプを選択 → Jar
続き 1. Javaのバージョンの選択 → 自分のJavaのバージョンを選択 わからない場合はjava –versionで確認 2. 依存関係の選択 →
今回はSpring Webのみ選択 3. Selected 1 dependency をクリック 4. プロジェクトを設置する場所を選択 5. 下の表記がでていれば完了! 6. Open押すと作った場所でvscodeが開き直されるので押していい
動かしてみる src/main/java/com/example/(アプリケーションの名前)/の中にある〜 Application.javaを開く 最初のクラスを書いているところ に一文追加する
動かしてみる
こんな感じ
Import確認 多分エディタが勝手にimportをしてくれると思うのですがして くれていない場合、上にこの記述がないと思います なければ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; の2つの記述を入れてください
ちょっとした小ネタ importされてない場合でる赤線をクリッ クして⌘ + . (Windowsの場合ctrl) を押すとクイック修正が起動して、 修正案がでてくるので 選択すると自動にimportできる ※エディタが間違うこともあるの
でちゃんと確認してimportするこ と
実行! これを押して実行
実行! うまく実行できていればこんな表示になるはず 実行できていればブラウザを開いて http://localhost:8080/ にアクセスしてください!
結果
アノテーションについて @ついてたなにか クラス、メソッド、変数などに付与できる プログラムにこれはこういう役割ですよと教える役目 例
作ってくよ!
今回作るもの
初期設定 • MacBookの方 • Command(⌘) + Shift(⇧) + P •
Windows の方 • Ctrl + Shift(⇧) + P 1. Spring Initializrと入力 2. Spring Initializr: Create a Gradle Project…を選択 ※ Create a Maven Projectもでますがこっちは違う! 続いて
続き 1. Spring Bootのバージョンを選択 → 今回は3.2.7 2. 言語を選択 → Javaを選択
3. Group Idの入力 → 変えてもいいけどとりあえずそのままcom.exampleで 4. Artifact Idの入力 → 今回は「diary」と入力 5. パッケージのタイプを選択 → Jar
続き 1. Javaのバージョンの選択 → 自分のJavaのバージョンを選択 わからない場合はjava –versionで確認 2. 依存関係の選択 (Spring
Web + Spring Data JPA + Thymeleaf + H2 Database を選択) 3. Selected 4 dependencies をクリック
続き 1. プロジェクトを設置する場所を選択 2. 下の表記がでていれば完了! 3. Open押すと作った場所でvscodeが開き直されるので押して いい
最終的なファイル構成 |--- src | |--- main | | |--- java/com/example/diary
| | | |--- DiaryApplication.java | | | |--- DiaryController.java | | | |--- DiaryEntries.java | | | |--- DiaryRepository.java | | | |--- DiaryService.java | | | | | |--- resources | | | |--- static | | | | |---style.css | | | |--- templates | | | | |--- add.html | | | | |--- edit.html | | | | |--- index.html
application.propertiesの編集 設定ファイル
Entityクラスの作成 データベースのテーブルに対応するクラス。
データベース 今回説明するのはリレーショナルデータベース 表形式でデータを管理する基本的なデータベース
Entityクラスの作成 データベースのテーブルに対応するクラス。 表の一行一行を対応する一つのオブジェクトとして管理するクラス
コードを書く
Repositryクラスの作成 Entityクラスだけだとデータベースとのやり取りができない データベースとのやり取りを担当するクラスが必要 今回はjpaデータベースという便利なものを導入してるので簡単
コードを書く 継承するだけ
Serviceクラスの作成 Serviceクラスとはビジネスロジックを担当するクラス 今は一旦そういうものなんだで良い Repositryから処理を委譲してくる
コードを書く
投稿画面をつくる
add.htmlの作成 main/resources/templatesの中に作成
Controllerに/addを追加
投稿画面できた(はず) http://localhost:8080/add にアクセス
Controllerに/saveを追加 まだ保存ができないので保存をできるようにする フィールドの追加 メソッドの追加
一覧ページを作る
index.htmlの作成 main/resources/templatesの中に作成
Controllerに/を追加
model.addAttributeとは • model • Controllerからhtmlファイルにデータを渡すコンテナ • addAttributeでデータをコンテナに設置
さっきの処理の流れ 1. diaryService.findAllでデータベースからデータの一覧を取得 2. model.addAttributeでデータをコンテナに設置 3. Htmlファイルで表示
Thymeleafについて テンプレートエンジンの一つ テンプレートとデータを合成して最終的なドキュメントを生成す る機能を持つ th: で書かれた部分がそれ
一覧画面できた(はず) 動かなかったらindex.htmlのここをコメントアウトしてください
データの消去 Delete機能の実装
Controllerに/deleteを追加 diaryServiceに処理を任せる
データが消去できる(はず)
データの編集ページの作成
edit.htmlの作成 main/resources/templatesの中に作成
Controllerに/editを追加
Optionalってなに? nullになる可能性がある変数に対して使用するコンテナオブジェクト 使用するメリット • 値が存在しない可能性を意識しながらプログラムがかける • NullPointerExceptionが回避できる
主な使い方 詳しくはこちら → https://docs.oracle.com/javase/jp/8/docs/api/java/util/Optional.html
さっきの処理について Optional<DiaryEntity> diary = diaryService.findById(id); diary.ifPresent(value -> model.addAttribute("diary", value)); 1.
diaryService.findById(id);で取得 2. データが存在した場合のみifPresent内の処理を実行 3. valueにDiaryEntity型の取得したデータが入りaddAttributeする。
Controllerに/updateを追加 データを更新しなければいけない
処理について 1. データを取得 2. データのnullチェック 3. Optinal型からデータを取り出す 4. Setterでデータを更新 5.
データベースを更新
試してみよう!
座学 時間があったらやる(あればいいね)
MVCについて ソフトウェア設計のパターンの一つ Model、View、Controllerに分けてコーディングをしていく Ruby on Rails, Spring Framework, Laravel など
今回の場合 Model → Entityクラス、Repositoryクラス、Serviceクラス Controller → Controllerクラス View → htmlファイル
Modelとは アプリケーションのデータやビジネスロジックを担当 • データの取得・保存・変更・削除 • データのバリデーション • ビジネスロジック
Controllerとは ユーザーからの要求に基づきアプリケーションを操作する ModelとViewに指示を行う
Viewとは ユーザーインターフェース(UI)を担当 ユーザーが直接触れ合う場所
こんな感じ
お疲れ様でした!