Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SpringBootでAPI開発
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Naka Sho
October 17, 2023
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SpringBootでAPI開発
SpringBootでAPI開発
Naka Sho
October 17, 2023
More Decks by Naka Sho
See All by Naka Sho
ローカルLLMで自動レビューの仕組み
shogonakao
0
11
無料で使える「LM Studio」でローカルLLM入門
shogonakao
0
120
単体テストの精度を高めるための guideline
shogonakao
0
290
Javaはレガシーではない!
shogonakao
0
230
型安全性で考えること
shogonakao
0
27
アプリケーションログをs3に転送するとき個人情報気をつけてますか?
shogonakao
0
50
コーディングエージェントと 筋トレ
shogonakao
0
85
エキサイトブログ刷新に向けて
shogonakao
0
140
【エキサイトブログリビルド】Spring Boot × MyBatis × FreeMarker を使って、データベースの接続先を安全に変更します。
shogonakao
1
890
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7k
Scaling GitHub
holman
464
140k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
340
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Transcript
Spring Boot でAPI 開発
本日の プレゼンテーション 主要トピック 環境構築(JDK,IntelliJ,Docker) Spring Bootの設定 hello worldを出してみよう docker でimage作ってみよう
docker でSpring Bootを起動させてみよ う データベースに接続してみよう データベースにデータを登録してみよう データベースのデータを削除してみよう
環境構築
Mac,Linux 向け sdkman から DL(windows な らwsl でも可) https://sdkman.io/ sdk
list java sdk install java 17.0.1-open sdk default java 17.0.1-open
Windows 向け ( 公式からDL) https://www.oracle.com/jav a/technologies/javase/jdk17 -archive-downloads.html Windows x64 Installer
https://download.oracle.com/java/17/a rchive/jdk-17.0.1_windows-x64_bin.exe (sha256)
IntelliJ IDEA Community Edition メモ帳、テキストエディタは使わない 大学の授業ではメモ帳とかでJavaを使うと思いますが、実際業務でそんなことはあり ません。本質的に、全く意味のないことだからです。 vscodeもjavaのプラグインを入れたら色々使えるのかもしれませんが、逆にいうと入 れないと使えません。 IntelliJ
IDEA Community Edition はJava用のIDEであり、なにもしなくても強力なツ ールで実際に業務で使っている会社も多いため、今の段階で使うことを進めます。
IntelliJ IDEA Community Edition https://www.jetbrains.com/j a-jp/idea/download/ 事前にダウンロードしておいてください
Docker https://www.docker.com/ge t-started/ 事前にインストールしておいてください
Spring Boot の設定 https://start.spring.io/ ProjectをGradle Groovy、Dependenciesに spring web を追加して GENERATEを押してください、
https://start.spring.io/#!type=gradle- project&language=java&platformVersion=3.0. 1&packaging=jar&jvmVersion=17&groupId=co m.example&artifactId=demo&name=demo&d escription=Demo%20project%20for%20Sprin g%20Boot&packageName=com.example.dem o&dependencies=web
Spring Boot の設定 IntelliJ IDEAでプロジェクトを開く 自動で依存関係がダウンロードされます。 しばらく待ってください。 今は設定だけなので、エンドポイントはありま せん。 なのでhello
worldのエンドポイントを作りまし ょう。
hello world を出してみよう コントローラーを作成する demo配下にcontrollerのパッケージを切り、 HrllpControllerを作成します。 @RestController public class HelloContoller
{ @GetMapping("hello") public String hello(){ return "hello"; } }
hello world を出してみよう Spring Bootを起動させる 右上のトンカチマークの横のセレクトボックス をクリックして、Editを出してください。 そこから Applicationを開いてください。
hello world を出してみよう Spring Bootを起動させる Nameをdemo、pathをdemo.mainにしてください。 Java 17が入っていれば自動でJava 17が選択されると思います。選択されなければ手動で設定してく ださい。起動するメインのアプリケーションはcom.example.demo.DemoApplicationにしてくださ
い。
hello world を出してみよう Spring Bootを起動させる 設定したら、先ほどのセレクトボックスの隣の再生ボタンをクリックしてください。 ブラウザでhttp://localhost:8080/hello にアクセスすると、helloがレスポンスされます。
docker でimage 作ってみよう build gradleにjibのプラグインを追加します id 'com.google.cloud.tools.jib' version '3.3.1' ※画像は旧バージョン使っています。
docker でimage 作ってみよう demo配下で以下を実行する、 するとdocker imageにdemo/demo v0.0.1が追加されています。 -Djib.from.image で imageの元、-Djib.to.imageで作成するイメージを指定します。
./gradlew jibDockerBuild -Djib.from.image=gcr.io/distroless/java17-debian11 - Djib.to.image=demo/demo:v0.0.1
docker でSpring Boot を起動させ てみよう docker でSpring Bootを起動させてみよう。 intelliJで起動してるSpring bootを止めて、以下のコマンドでdockerでspring
bootを立ち上げてください。 同様に http://localhost:8080/hello にアクセスするとhello がレスポンスされ ます。 docker run -it --rm -p 8080:8080 demo/demo:v0.0.1
データベースに接続してみよう build.gradleのdependenciesに以下を追加して、gradleを読み込み直します implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.0' implementation "org.mybatis.scripting:mybatis-freemarker:1.2.2" runtimeOnly 'com.h2database:h2'
application.propertiesに以下を記載して、アプリケーションを再起動します spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url=jdbc:h2:~/demo spring.datasource.username=demo spring.datasource.password=demo123 spring.h2.console.enabled=true データベースに接続してみよう
データベースに接続してみよう データベースの管理画面にアクセスする http://localhost:8080/h2-console にアクセスする application.propertiesの設定と同じ記載をして接続してください。
データベースに接続してみよう helpにあるデータベースを作成しましょう CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255));
INSERT INTO TEST VALUES(1, 'Hello'); INSERT INTO TEST VALUES(2, 'World');
データベースに接続してみよう データベースができたので、javaからアクセスしてみましょう build.gradleのdependenciesに以下を追加して、gradleを読み込み直します compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.projectlombok:lombok' testAnnotationProcessor
'org.projectlombok:lombok'
データベースに接続してみよう persistenseというパッケージを新規で作成し、二つのファイルを作成します コードは次に記載します
データベースに接続してみよう persistenseというパッケージを新規で作成し、二つのファイルを作成します package com.example.demo.persistense; import lombok.Data; @Data public class Test
{ private Integer id; private String name; }
データベースに接続してみよう persistenseというパッケージを新規で作成し、二つのファイルを作成します package com.example.demo.persistense; import org.apache.ibatis.annotations.Lang; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select;
import org.mybatis.scripting.freemarker.FreeMarkerLanguageDriver; import java.util.List; @Mapper public interface TestMapper { @Lang(FreeMarkerLanguageDriver.class) @Select(""" select id, name from TEST """) List<Test> getAll(); }
データベースに接続してみよう HelloControllerに test/list というエンドポイントを追加してみましょう。 追加してアクセスするとDBの一覧が取得できます。 @GetMapping("test/list") public List<Test> testList(){ return
testMapper.getAll(); }
TestMapperに insertメソッドを追加してみましょう。 @Lang(FreeMarkerLanguageDriver.class) @Insert(""" insert into TEST values (<@p name="id"/>,
<@p name="name"/>) """) void insert(@Param("id") Integer id, @Param("name") String name); データベースにデータを登録して みよう
HelloControllerに test/create というエンドポイントを追加してみましょう。 追加してアクセスするとDBの登録ができます。登録後の確認は http://localhost:8080/test/list にアクセスして確認しましょう @PostMapping("test/create") public String testCreate(@RequestParam
Integer id, @RequestParam String name) { testMapper.insert(id, name); return "OK"; } データベースにデータを登録して みよう