Java
2021年になってGitHub Actions等のCIを使ったSonarCloud連携がしやすくなったので、手順を纏めます。 今回の記事では、JaCoCoでカバレッジを取得して、コードをSonarCloudへ連携できることをゴールとします。 環境 Java 11 JaCoCo SonarQube 3.3 Gradle 7.0.…
※ 泥臭いやり方でしか実践できていません。 JavaのLINEオープンチャットにて、「配列内部の特定条件のみ変換したい」という質問がありました。 今後、同様の質問が来たときにスマートな回答ができるようにいくつか検証したメモを残します。なお冒頭にも書い…
SpringBootで実際に起動してあるDBを使ったユニットテストをしようとすると、デフォルトだと動かないようです。 正確にはEmbeddedDataSourceBeanFactoryPostProcessor(ログだと長すぎるのでbeddedDataSourceBeanFactoryPostProcessorとして表示される)やEm…
小ネタ。 環境 Java 16 SpringBoot 2.4.5 概要 設定ファイルの値を取得したい場合は、TestContextからApplicationContext、Environmentを経由してgetProperty(String key)で取得できます。 testContext .getApplicationContext() .getEnvironment() .getProp…
この記事では、JavaのSpringBootを使って、APIからファイルをダウンロードする機能の実装メモを残します。ResponseBodyがないため、@Controllerでも、@RestControllerのどちらで定義しても構いません。 クラウドを使用している場合はAWSであれば、S3で保存し…
この記事はAssertクラスを紹介するだけの小ネタです。 Springには、Assertクラスという簡単にValidationしてくれるようなクラスがあります。複雑なことはできませんが、サクっとメソッドのパラメータを検証したい時は便利です。なお、複雑なことをしたければ…
弊社ではモックサーバにWiremockを使用しています。 この記事ではWiremockを知ってもらうきっかけを提供することを目的としています。詳しいことは他の方の記事を参考にした方が良いでしょう。 ゴール WiremockのモックサーバでJUnitでテストする Wiremockの…
小ネタ。JavaのStringJoinerを使うことで、カンマ区切りの文字列を簡単に作れます。 今回の記事は、StringBuilderを使ったカンマ区切りの文字列の作り方をメモします。既存のStringBuilderでのカンマ区切りの文字列を作り方も併記します。 環境 Java 15 クラ…
たとえばDBは本番環境ではOracle、テスト環境ではH2を使っているケースがあるとします。その場合、Oracleでは動くがH2では動かないSQLを作成してしまうことが考えられます。 他にも、本番環境はAmazon RDS for Oracleを使っているが、テスト環境で用意できて…
標準入力と標準出力をテストしようとすることは基本的にはありません。標準出力ではなく、Loggerに書き込まれていることを確認することが多いでしょう。 しかし、知っておいて損はありません。今回の記事では、FizzBuzzを使って標準入力と標準出力のテストを…
タイトルの出オチ記事。これを知るためだけに4日くらい無駄にしました。参考先のブログに感謝です。 環境 Maven 3.6.0 結論 Mavenでproxyを通す設定は、~/.m2/settings.xmlに設定する必要があります。 ただし、~/.m2/settings.xmlに複数定義できても、設定は…
TwitterやJavaのオープンチャットででたまーにResultSetから直接LocalDateTimeやBigIntegerを取得できずに、一旦Stringやjava.sql.Dateで取得した後に変換している、ということを見かけることがありました。直接LocalDateTimeやBigIntegerで取得することがで…
小ネタ。正直、記述量が増えるので好き嫌いで言うと嫌いですが、NullPointerException(以後、NPE)が発生しなくなるので安全に処理したい時はオススメです。 環境 Java 15 出現時期 java.util.Objects Java1.7 Java7の時代からあります。分かりづらいですが、…
小ネタ。JavaにはLombokという便利なライブラリがあります。その便利なライブラリの中にあるToString、その中でもIncludeとExclude, callSuperを駆使すると便利だったので、ぜひ覚えてください。 この記事では、ToStringのInclude, Exclude, callSuperの3つ…
Javaのオープンチャットにて、「SpringBootの起動時にDBアクセスしてマスタデータを保持することは可能ですか?」といった質問が出てきました。 この記事は、解決方法として挙げられたPostConstructという処理を理解していなかったので、PostConstructを勉強…
※ JUnit5のアップデートを知るための記事ではありません。私の知識アップデートをお伝えする記事になっています。 以前、ParameterizedTestに関する記事を書きました。その時は、テストコードの表現力を意識して、ArgumentsSourceを使ったほうが良いという結…
Java単体でもリフレクションで値を取得できます。しかし、ネストされた値を取得することは非常に面倒です。 Springではもっと簡単に値を取得することができます。それは、Spring式言語(Spring Expression Language、以後 SpELと表現します)を使用した方法で…
基本的にはIDEのサポートが得られなかったり、静的解析してくれないので、リフレクションは使ってはいけません。しかし、非推奨であることと、使えないことは違います。 当記事では、Javaでリフレクションを使ってprivateメソッドとフィールドを呼び出せるこ…
年と月のパラメータから月末日を求めるYearMonth型の記事を書きました。しかし、個人的に時刻を扱うときはLocalDate, LocalDateTimeのどちらかで扱いたいです。 今回の記事では、LocalDate, LocalDateTimeを元に月末日を求めます。 環境 Java 15 前提条件 な…
Javaにて年と月から、その年の月末日を求める方法をメモとして残します。 環境 Java 15 前提条件 パラメータは年と月のみ 「2021-05」等の1つにまとまったパラメータも含む ゴール 閏年も含めて、月末日を求めることができる YearMonth型 Java8からjava.time…
以前、法律に従った暦上の計算方法を記事にしました。 当記事ではJavaで法律に従った暦による期間の計算を求める方法を記します。 環境 Java 15 ユースケース 月次で契約するサブスクリプションサービスを実施しています。中途半端な日に解約されてしまうと…
あまり明示的に書くことが無かったので、MessageFormatを知りませんでした。 この記事では、メール等のタイトルや文言に対して、MessageFormatを使うことで「○○様」というフォーマットから「きり丸様」という文言を導き出すことをゴールとします。 環境 Java…
小ネタ。業務で使ったことは無いですが、LeetCodeで必要になることが多いので自分向けに整理します。 なお、もっとよりよいやり方があれば教えていただきたいです。 環境 Java 15 ゴール 入力値は数値 戻り値は数値の配列(Listでも配列でもOK) 最も早く変…
今日も小ネタ。 NullPointerExceptionを回避するのは簡単だけど、もうちょっとスマートに書けない? ということを纏める記事。 余談ですが、NullPointerExceptionは「ぬるぽ」とか大文字取って「NPE」とか呼んでます。以後、「NPE」で統一します。 環境 Java…
超がつく小ネタ。よく忘れるのでブログ化。 環境 Java 15 結論 Optional型のofNullableメソッドでNullでも問題なく処理できるようにする。 そのあと、Stream APIのflatMapメソッドとCollection型のstreamメソッドを組み合わせる。 Optional.ofNullable(detai…
自分が知りたかったBigDecimalの知識を集める記事。なお、基本型を扱う関係上、新規性は多くありません。強いて言えば、2021年でも扱えるってことくらいですかね。 環境 Java 15 この記事を読んでわかること一覧 precisionとscale(有効桁数と精度) 型宣言 …
去年書いた記事で使用していたクラスがDeprecatedになっていたので、新しく更新します。 前回の記事を書いた時にアップデートしておけばよかったです。 変更点 ConfigFileApplicationContextInitializer から ConfigDataApplicationContextInitializer に変…
前にデータセットアップを面倒くさがって、BeanPropertySqlParameterSourceを使ってパラメータの項目名を取得していました。その時の記事。 そのまま使用していると、自分の目的通りには使えなかったので結局自作しました。 その時のメモ。 環境 Java 15 H2 …
JavaでRequestの前後に処理を挟むことができるインターセプタを実装したので、メモをします。 実装方法は色んな記事で書いてあるものの、テストまでは書いてないことが多いのでそこで差別化を図ります。 環境 Java 15 SpringBoot 2.4.1 ユースケース APIの流…
小ネタです。地味に知らなかったので、自分で纏めました。 環境 Java 15 Gradle 6.6.1 ※ なお、Spring Initializr で生成されていることを想定しています。 コマンド 次のコマンドでビルドすることを想定しています。 ./gradlew build 指定したファイル名で…