SpringBoot
きり丸アドベントカレンダー2020の19記事目です。 ToDoアプリケーションでは、CSVファイルをアップロードして一括で登録するような機能があると便利です。ですので、ファイルをアップロードする仕組みを作りましょう。 ゴール HTMLからJavaにファイルをアッ…
きり丸アドベントカレンダー2020の18記事目です。 RestControllerAdviseで共通的に例外をキャッチする方法をこちらの記事で紹介しました。 しかし、RestControllerAdviseは発生した例外をキャッチするのが役割で、例外を自作例外に翻訳することはこのクラス…
きり丸アドベントカレンダー2020の17記事目です。 エラーが発生した時に、共通的にExceptionをキャッチできると、フロントに返却するレスポンスのHttpStatusやBodyを共通化できます。その共通化にはRestControllerAdviseを使用します。 それぞれ適切なExcept…
きり丸アドベントカレンダー2020の16記事目です。 自システムのデータをREST APIで公開すると、非同期で処理ができるようになるのでフロントのシステムをSPAにできたりします。第三者にデータを提供することもできます。 ぜひ、REST APIでシステムを公開する…
きり丸アドベントカレンダー2020の15記事目です。 作成したアプリケーションを各環境にデプロイする際、2つの考え方があります。 各環境用に設定ファイルを書き換えてデプロイする 各環境用に複数の設定ファイルを用意し、デプロイ後に読み込む設定ファイル…
きり丸アドベントカレンダー2020の14記事目です。 アプリケーションは常に動いている必要があります。ただし、障害で動かなくなることもよくあります。動かなくなった場合には、早く気付けるようなしくみが必要です。その1つとして常に同じ値を返すAPIを用意…
きり丸アドベントカレンダー2020の12記事目です。 画面の項目が必須項目なのか、数字のみ許容するのか、Email形式のみしか許容しないのかをサーバ側で検証する必要があります。この項目を検証することをバリデーションと言います。 基本的には画面側のJavaSc…
きり丸アドベントカレンダー2020の11記事目です。 今回の記事でControllerのテストを行います。GET通信やPOST通信を行って、そのあとの挙動をテストします。 ゴール Controllerのテストを行う できないこと WebMvcTestでのテスト 環境 Java 15 手順 テストの…
きり丸アドベントカレンダー2020の10記事目です。 自分の勉強も兼ねてログイン機能を実装してみましたが、ベストプラクティスは分かりませんね…。難しい。 今回の記事でログイン機能を実装します。アプリケーションらしくなりますが、セキュリティをブラック…
きり丸アドベントカレンダー2020の9記事目です。 今回の記事でMyBatisのテストを行えるようにします。テスト用のスターターが準備されているので、テストのための準備は簡単です。ただし、テストのセットアップは慣れていないと、時間がかかってしまいます。…
きり丸アドベントカレンダー2020の8記事目です。 今回の記事でDBの更新を行います。データの取得(Select)と追加(Insert)をこの記事で紹介します。 更新と削除に関しても同様の処理で問題ありませんので、頑張ってみてください。なお、9日目にDBのテスト…
きり丸アドベントカレンダー2020の7記事目です。 6日目の記事でJava -> HTMLにデータを転送することができました。 しかし、それではデータを取得することしかできません。 今回の記事では、データの更新、削除、追加できるようにHTML -> Javaにデータを転送…
きり丸アドベントカレンダー2020の6記事目です。 始めに宣言しておくと、この辺から「やはりIntelliJ IDEAいいなぁ…」みたいに思うことが多くなってきます。しょうがないとはいえ、GitpodやVS Codeはライブラリのimport機能が貧弱です。 コーディング中に引…
きり丸アドベントカレンダー2020の4記事目です。 Gitpod上でDBの環境構築もできると、確認できることが増えます。DBも設定しましょう。 手順 .gitpod.Dockerfileを修正 gp initで作成したDockerのイメージにはPostgreSQLは含まれていません。ですので、.gitp…
きり丸アドベントカレンダー2020の3記事目です。ようやくSpringBootの起動ができます! なお、まだコードは触れません。 Springのプロジェクトを作成し、Gitpodにアップロードしました。しかし、現在のままではGitpodでSpringの開発をしようにも、そもそも起…
きり丸アドベントカレンダー2020の2記事目です。 Java歴6年になりますが、いまだにゼロからプロジェクトを作成するのは苦手です。というか、出来ないですね…。 じゃあ、どうやってプロジェクトを作っているかというと、Spring Initializrというサイトでプロ…
2021/03/31 追記 SpringBoot2.4以降の場合はこちらの記事も参考にしてみてください。 SpringBootではpropertiesファイルやymlファイル(以降、設定ファイル)に、DBのURL等々の環境ごとの変数を記載できます。 設定ファイルの値が目的通り一致していることを…
テスト設計というのは非常に難しいです。 ちょっとでも見誤ると、すぐにテストができない設計になってしまい、テストをしないという設計になってしまいがちです。 これを避けるためにTDDを行うのですが、粒度の違うUTとE2Eではテストの設計が違ってくるので…
※ もっと高速化する方法がありましたら教えていただきたいです。 もしくは、高速化するためのリファレンスページ教えてください。 はじめに Springフレームワークは、DI機能を持っており、依存関係を疎にできます。 テストするときは、@SpringBootTestのアノ…
共通的かつ一部コントローラークラスのみ特別なハンドリングをする方法を残します。 環境 Java 11 Spring Framework 共通的なコントローラのハンドリング RestControllerAdviceというアノテーションを付けると、全コントローラーを共通的にハンドリングする…