Slide 1

Slide 1 text

Spring Boot でAPI 開発

Slide 2

Slide 2 text

本日の プレゼンテーション 主要トピック 環境構築(JDK,IntelliJ,Docker) Spring Bootの設定 hello worldを出してみよう docker でimage作ってみよう docker でSpring Bootを起動させてみよ う データベースに接続してみよう データベースにデータを登録してみよう データベースのデータを削除してみよう

Slide 3

Slide 3 text

環境構築

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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)

Slide 6

Slide 6 text

IntelliJ IDEA Community Edition メモ帳、テキストエディタは使わない 大学の授業ではメモ帳とかでJavaを使うと思いますが、実際業務でそんなことはあり ません。本質的に、全く意味のないことだからです。 vscodeもjavaのプラグインを入れたら色々使えるのかもしれませんが、逆にいうと入 れないと使えません。 IntelliJ IDEA Community Edition はJava用のIDEであり、なにもしなくても強力なツ ールで実際に業務で使っている会社も多いため、今の段階で使うことを進めます。

Slide 7

Slide 7 text

IntelliJ IDEA Community Edition https://www.jetbrains.com/j a-jp/idea/download/ 事前にダウンロードしておいてください

Slide 8

Slide 8 text

Docker https://www.docker.com/ge t-started/ 事前にインストールしておいてください

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Spring Boot の設定 IntelliJ IDEAでプロジェクトを開く 自動で依存関係がダウンロードされます。 しばらく待ってください。 今は設定だけなので、エンドポイントはありま せん。 なのでhello worldのエンドポイントを作りまし ょう。

Slide 11

Slide 11 text

hello world を出してみよう コントローラーを作成する demo配下にcontrollerのパッケージを切り、 HrllpControllerを作成します。 @RestController public class HelloContoller { @GetMapping("hello") public String hello(){ return "hello"; } }

Slide 12

Slide 12 text

hello world を出してみよう Spring Bootを起動させる 右上のトンカチマークの横のセレクトボックス をクリックして、Editを出してください。 そこから Applicationを開いてください。

Slide 13

Slide 13 text

hello world を出してみよう Spring Bootを起動させる Nameをdemo、pathをdemo.mainにしてください。 Java 17が入っていれば自動でJava 17が選択されると思います。選択されなければ手動で設定してく ださい。起動するメインのアプリケーションはcom.example.demo.DemoApplicationにしてくださ い。

Slide 14

Slide 14 text

hello world を出してみよう Spring Bootを起動させる 設定したら、先ほどのセレクトボックスの隣の再生ボタンをクリックしてください。 ブラウザでhttp://localhost:8080/hello にアクセスすると、helloがレスポンスされます。

Slide 15

Slide 15 text

docker でimage 作ってみよう build gradleにjibのプラグインを追加します id 'com.google.cloud.tools.jib' version '3.3.1' ※画像は旧バージョン使っています。

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

データベースに接続してみよう 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'

Slide 19

Slide 19 text

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 データベースに接続してみよう

Slide 20

Slide 20 text

データベースに接続してみよう データベースの管理画面にアクセスする http://localhost:8080/h2-console にアクセスする application.propertiesの設定と同じ記載をして接続してください。

Slide 21

Slide 21 text

データベースに接続してみよう helpにあるデータベースを作成しましょう CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255)); INSERT INTO TEST VALUES(1, 'Hello'); INSERT INTO TEST VALUES(2, 'World');

Slide 22

Slide 22 text

データベースに接続してみよう データベースができたので、javaからアクセスしてみましょう build.gradleのdependenciesに以下を追加して、gradleを読み込み直します compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok'

Slide 23

Slide 23 text

データベースに接続してみよう persistenseというパッケージを新規で作成し、二つのファイルを作成します コードは次に記載します

Slide 24

Slide 24 text

データベースに接続してみよう persistenseというパッケージを新規で作成し、二つのファイルを作成します package com.example.demo.persistense; import lombok.Data; @Data public class Test { private Integer id; private String name; }

Slide 25

Slide 25 text

データベースに接続してみよう 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 getAll(); }

Slide 26

Slide 26 text

データベースに接続してみよう HelloControllerに test/list というエンドポイントを追加してみましょう。 追加してアクセスするとDBの一覧が取得できます。 @GetMapping("test/list") public List testList(){ return testMapper.getAll(); }

Slide 27

Slide 27 text

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); データベースにデータを登録して みよう

Slide 28

Slide 28 text

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"; } データベースにデータを登録して みよう