Java

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)

①ドメインクラスの定義 1. エンティティでマッピングに使用するクラスに@Domainアノテーションを付与する 2. アノテーションの属性factoryMethodでインスタンスを生成するためのメソッド名を指定する 3. アノテーションの属性accessorMethodでラップする値を…

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のテストをしようとしたときに以下のような時があったら使用する 現在日時を返…

Junit5の使い方

Junit5の使い方 Junit5の書き方 org.junit.jupiterパッケージのアノテーションとクラスを使用する。 テストメソッド @Testを付与したメソッドは、テスト実施の対象となる。 import org.junit.jupiter.api.Test; class SampleTest { @Test public void sample…

Javaで正規表現チェック

正規表現 正規表現とは 様々な文字列を一つの文字列で表現する表記法 なぜ便利なのか 正規表現を利用すると様々な文字列を一つの文字列で表現できるため、文字列の検索や置換が便利になる。 例えば、以下の文字列は全て同じ正規表現で表すことができる。 app…

Java基礎ーSQL

SQL Java標準の機能を使用したDBの処理 についてまとめる。 JDBCドライバのダウンロード DBの公式サイトからJDBCドライバをダウンロードして、クラスパスに配置する。 DBに接続する public void doSql(){ // ドライバーのダウンロード Class.forName("org.po…

Java基礎ーOptional

java.util.Optionalクラス Optionalは値をラップし、その値がnullかもしれないことを表現するクラス。 Optionalオブジェクトの生成 メソッド 説明 Optional empty() null値を持つOptionalオブジェクトを返す Optional of() 非null値を持つOptionalオブジェク…

Java基礎ーStream

StreamAPI 配列やCollectionなどの集合体を扱う為のもので、値の集計やデータを使った処理などが出来るAPI 使い方の大まかな流れ 1. Streamを取得 主なStreamの種類 インターフェイス 説明 Stream<t> 要素がTのインスタンスのStream IntStream 要素がintの値のS</t>…

Java基礎ーラムダ式

ラムダ式 関数型インターフェースを実装するための記述を簡潔に書ける →抽象メソッドを1つ持つインターフェース 基本形:インターフェース名 オブジェクト名 = (引数1, 引数2, ・・・) -> {処理 ; return 戻り値;}; ラムダ式記入例 // 関数インターフェース…

Java基礎ープロパティファイル

プロパティファイル プロパティファイルとは キーと値が対になったデータを保存しているファイル。 コンパイルなしでプログラムの動作を変更できるので後で変わる可能性のある値とか設定すると良い。 # コメント sample.id=abcde プロパティファイルの読み込…

Java基礎ーファイル入出力

ファイル入出力 1. ファイル入力 ファイル読み込みには以下の4種類のいずれかを使用する。 種類 説明 FileReader ファイルを1文字ずつ読み込む。Java11以降はエンコーディングを指定することができる。 BufferedReader FileReaderをラップするクラス。ファイ…