Java

TimerTriggerの作成(Spring Boot)

Spring Boot でAzure FunctionsのTimerTriggerを実装して、ローカルで動作確認する手順を示す。 プロジェクトの作成方法については、以下の記事参照。 olafnosuke.hatenablog.com バージョン Spring Boot:2.7.5 Java:17 ファンクションを新規追加する ファ…

EventGrid Triggerの作成(Spring Boot)

Spring Boot でAzure FunctionsのEventGrid Triggerを実装して、ローカルで動作確認する手順を示す。 プロジェクトの作成方法については、以下の記事参照。 olafnosuke.hatenablog.com バージョン Spring Boot:2.7.5 Java:17 ファンクションを新規追加する…

HTTP Triggerの作成(Spring Boot)

Spring Boot でAzure FunctionsのHTTP Triggerを実装する手順を示す。 プロジェクトの作成方法については、以下の記事参照。 olafnosuke.hatenablog.com バージョン Spring Boot:2.7.5 Java:17 ファンクションの新規追加する ファンクションを新規追加する…

Spring Bootで動作するAzure Functionsプロジェクト作成(Gradleプロジェクト)

プロジェクト作成 1. 必要なツールのインストール 〇Node.js(Windows 64bit版 LTS v14.17.6) 以下のサイトからインストール。 https://nodejs.org/ja/download/ 〇Azure Functions Core Tools コマンドプロンプトで以下のコマンドを実行する。参考 npm i -…

mockMvcを使用したControllerのテスト方法(Spring Boot)

mockMvcを使用したControllerのテスト方法(Spring Boot) Controllerのテストやフィルターやインターセプターが実際に動作しているのか検証する際にMockMvcを使用する。 テストの作成方法をメモしておく。 シンプルなControllerのテスト作成 以下がテスト対象…

バリデーションのグルーピング

バリデーションの基本的な使用方法は、以下の記事参照 olafnosuke.hatenablog.com バリデーションのグルーピングの実装 バリデーションを複数つけているフィールドで、バリデーションの順番を指定したい場合や、条件によってバリデーションする項目や条件を…

カスタムバリデーションの実装方法

バリデーションの基本的な使用方法は、以下の記事参照 olafnosuke.hatenablog.com 提供されているアノテーション以外のバリデーションを行う場合、独自でバリデーション処理を実装する必要がある。 単項目チェックのカスタムバリデーションの実装方法 「文字…

Spring Boot:提供されているバリデーションの種類

バリデーションの基本的な使用方法は、以下の記事参照 olafnosuke.hatenablog.com Spring Bootで使用できるバリデーションはココを参照。 数値のバリデーション @Max 入力値が最大値以下であるかをチェックする。 対象の型:BigDecimal、BigInteger、byte、s…

Spring Bootが提供するバリデーションの使用方法

依存関係の追加 spring-boot-starter-validationの依存関係を追加する。 gradleを使用している場合、以下の記述をbuild.gradleに追加する。 // Hibernate Validator で Java Bean Validation を使用するためのスターター implementation 'org.springframewor…

SpringBootで画面と値のやり取りをしたい(ModelとModelAndView)

ModelとModelAndViewの使い方 Controllerクラスのメソッドの引数について 画面と値をやりとりするのに、ModelもしくはModelAndViewを使用する。 参考:https://spring.pleiades.io/spring-framework/docs/5.3.10/reference/html/web.html#mvc-controller Mod…

OSSの追加方法(Java)

OSSの追加方法(Java) Eclipseでツールを使わずにOSSを追加する OSSの使用するためには、使用したいOSSのjarファイルをクラスパスに追加する必要がある。 使用したいOSSのjarファイルをダウンロードする プロジェクトのルートにlibファイルを作成しそこにja…

Spring Bootでアプリケーション起動時にタイムゾーンを設定する

SpringApplicationEventを使用することで実現可能。 Spring Bootがデフォルトで用意しているイベントには以下がある。 イベントクラス名 説明 ApplicationFailedEvent SpringApplicationの開始に失敗したときにSpringApplicationによって発行されるイベント…

Spring Bootでサーブレットフィルターを作成する

サーブレットフィルターは、サーブレットやJSP(Springではコントローラー)において「共通の前後処理を記述するための仕組み」のことを指す。 javax.servlet.Filterを実装して作成する。 フィルタークラスの実装 Filterインターセプターには3つのメソッドが…

Azure Cosmos DB EmulatorをJavaで操作する(実装編)

前回の記事でAzure Cosmos DB EmulatorにJavaから接続するための設定が完了したので、今回は実際にAzure Cosmos DB Emulatorを操作する処理を実装していく。 Azure Cosmos DB EmulatorにJavaから接続するための設定は以下の記事を参照 olafnosuke.hatenablog…

Azure Cosmos DB EmulatorをJavaで操作する(準備編)

2記事に分けて、Java(Spring Boot)からAzure Cosmos DB Emulatorを操作する手順をまとめます 。 今回はJava側からEmulatorに接続するための準備段階の手順についてまとめていきます。 Azure Cosmos DB Emulatorのダウンロード 以下のサイトからダウンロー…

Doma2で楽観排他

Doma2で楽観排他を実現する方法と更新失敗時の例外処理についてまとめる。 Domaの設定方法 エンティティクラスの楽観ロック用のバージョンカラムにあたるメンバ変数に@Versionを付与する。 @Entity @Table(name = "sample") @ToString @EqualsAndHashCode pu…

Doma2で任意のクラスにマッピングさせる

DomaのエンティティはデフォルトでInteger型やString型など基本型にマッピングされるが、ドメインクラスを定義することで、別のクラスにラッピングさせることができる。 doma-codegen-pluginで現状エンティティの自動生成でドメインクラスにマッピングするよ…

Spring Bootで非同期処理

Spring Bootで非同期処理を実装する方法を説明する。 非同期で実行したいメソッドを作成する Service実装クラスで、非同期で実行したいメソッドを実装する。 メソッドに@Asyncのアノテーションを付与する 属性値に非同期処理の設定のbean名を指定する メソッ…

プロパティの有無/値によってBean登録するクラスを切り替える(Spring Boot)

@ConditionalOnProperty SpringBootが提供しているアノテーションで、ある特定のプロパティが指定の値かどうかチェックを行う。 チェック結果がtrueの場合、アノテーションを付与しているメソッドが実行され、bean登録される。 アノテーションの属性には以下…

JavaでMongoDBを操作する(SpringBoot)

MongoDBの導入手順は以下の記事に記述しています。 olafnosuke.hatenablog.com JavaでMongoDBを操作する(SpringBoot) 依存関係の追加 build.gradleにspring-boot-starter-data-mongodbの依存関係を追加する。 dependencies { implementation 'org.springfr…

SpringBootでモデルをセッションに格納する

SpringBootでモデルをセッションに格納する SpringBootでモデルやエンティティをセッションに格納する方法を説明する。 実装には@SessionAttributesアノテーションを用いる。 @SessionAttributesアノテーションを使用してセッションに格納したオブジェクトは…

Spring Bootで例外処理

Spring Bootで例外処理 エラーページの表示 spring bootでは、Thymeleafを使用している場合、デフォルトで例外発生時にはsrc/main/resources/template/error.htmlに遷移する。 上記のパスにファイルが存在しない場合は、springが準備したWhitelabel Error Pa…

SpringBootーControllerAdvice

ControllerAdviceとは? ControllerAdviceとは、エラー処理などをコントローラーの共通処理としてまとめて定義するためのものである。 @Controllerを付与したクラスには、Handlerメソッド(@RequestMappingを付与したメソッド)とは別に、Controller専用の特殊…

SpringでInterceptorを利用する(SpringBoot)

Interceptorとは? Interceptorは、画面処理の前後とリクエストの一番最後に呼び出される割り込み処理のこと。 Interceptorを使うとControllerの実行前後に処理を追加することができる。 実装する場合には、org.springframework.web.servlet.HandlerIntercep…

SpringFrameworkーAOPとは?

SpringFrameworkの特徴的な機能のひとつであるAOPについて書いていきます。 SpringFrameworkについての記事はこちら olafnosuke.hatenablog.com AOPとは? Aspect Oriented Programmingの略で、「アスペクト指向プログラミング」と呼ばれる。 AOPを使用する…

SpringFrameworkーDIとは?

SpringFrameworkの特徴的な機能のひとつであるDIコンテナについて書いていきます。 SpringFrameworkについての記事はこちら olafnosuke.hatenablog.com DIコンテナとは SpringがJavaのインスタンスを管理している入れ物。 管理方法:key-value方式 例: samp…

Spring Frameworkとは

Spring Frameworkとは アプリケーション開発を容易にすることを目的としたオープンソースのJavaアプリケーションフレームワークのこと。 多数のサブプロジェクトで、Webアプリケーション開発に必要な機能(リクエストマッピング、セッション管理、入力チェッ…

APIをモック化する(Wiremock)

WireMock 公式HP 依存関係を追加する build.gradleに以下の記述を追加する。 dependencies { testImplementation 'com.github.tomakehurst:wiremock-jre8:2.31.0' } Junit5で使用する Junit5でWireMockを使用する方法として、declarativeとprogrammaticの2つ…

ログ出力内容確認テスト(Junit5)

ログ出力内容確認テスト(Junit5) logunitを使用して検証する方法を説明する。 logunit(Github) 依存関係の追加 gradleを使用している場合は、build.gradleに以下の記述を追加する。 dependencies { testImplementation "io.github.netmikey.logunit:loguni…

Junitでのモック定義(Mockito)

Mock 1. Mockとは テストしたいクラスが依存しているブジェクトに代わって使用されるテスト用のオブジェクト。 テストに必要な部品の値を擬似的に設定するもの。 例えば、クラスAのテストをしようとしたときに以下のような時があったら使用する 現在日時を返…