UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

Java

【Java】パッケージjavax.xml.bindは存在しません

ソースコードは変更していないにもかかわらず、JAXBを使用してXMLデータをパースしているコードでJAXBクラスが見つからないことを示すエラーが発生した try { JAXBContext context = JAXBContext.newInstance("com.acme.foo"); Unmarshaller unmarshaller = …

【Java】ざっくりMapStruct

JavaのライブラリのMapStructを使うことになったので、ざっくり調べる mapstruct.org MapStruct は Annotation Processor を使って、Javaのオブジェクト間のマッピングに対するコードをコンパイル時に自動生成するマッピングライブラリ 複数のレイヤーで構成…

【Jackson】JavaのZonedDateTime型とESのdateタイプ(strict_date_time)のアンマッチ対策

Elasticsearchのあるインデックスにdateタイプのフィールドを定義し、そこにバッチの開始日時を格納していた dateタイプで使っているフォーマットはstrict_date_time "startDateTime": { "type": "date", "format": "strict_date_time" }, strict_date_time…

【Vavr】反復処理でインデックスを使いたい

Vavrを利用して次のようなリストを定義した時、要素を繰り返し処理し同時に要素番号(index)にアクセスしたい List<Integer> integers = List.of(1, 2, 3); JavaScriptだと以下のようにしてindexがとれるがVavrの場合はどうやるのか integers.forEach((item, index) </integer>…

【Cloud Build】JavaのアプリケーションをAppEngine Deployする

これまでSpring Cloud GCP で Secret Manager に登録した秘密情報をアプリケーションの設定値として設定できるようにしてきて、これをデプロイするところまで行った uga-box.hatenablog.com uga-box.hatenablog.com あとはこれをCloud BuildでAppEngine Depl…

【Spring Boot】@ConfigurationProperties

Spring Bootの@ConfigurationPropertiesをうすくおさらい @ConfigurationPropertiesを使うとプロパティファイルで定義されたプロパティへ簡単にアクセスすることができる propertiesファイルを以下のように定義する user.firstName=John user.lastName=Doe u…

【Java】数字の文字列のはずがBigDecimalへの型変換でNumberFormatExceptionになる

あるAPIのレスポンスの結果で、長さの単位のフィートの項目がある このフィートの値は文字列でセットされているので、のちのち計算するためBigDecimalに型変換したい すごく単純に、以下のように型変換するだけでよいと思ったがNumberFormatExceptionが発生…

【Java】StringからEnumへの変換

言語のEnumクラスを以下のように定義していたとき、文字列の"EN"や"JA"からEnumに変換したくなった public enum Language { EN("en"), JA("ja"); private final String code; Language(String code) { this.code = code; } public String getCode() { return…

【Maven】pom.xmlにprofileを設定する

MavenプロジェクトをGAEにデプロイする時、複数のapp.yamlを用意しておいてデプロイ先のサービスを切り替えたい app.yamlはGAEの設定が書かれているファイルで、このような感じでGAEのサービス名を指定することができる ... service: foo-service ... このfo…

【Jib】 Jibとは?

Java アプリケーションを動かすDockerコンテナイメージをつくりたい そんなときjibというツールを知ったので調査してみた github.com Jibは、Javaアプリケーション用に最適化されたDockerイメージをつくることができるMavenまたはGradleのプラグイン 【利点…

【Java】Consumer

Javaの実装でxxxConsumerクラスというのを見つけて、こういうクラスはどういうものなのかを調べた この記事でなんとなくわかった qiita.com Consumerはつまり、引数を消費するインスタンスを定義するためのインターフェイス 引数は取るが返り値は存在しない…

【Java】@ComponentScanと@import

Spring Bootで作られたアプリの実装をみていて、@ComponentScanと@Importの使い分けがよくわからなかったので調査する どちらもマルチモジュール のように複数のプロジェクトでクラスを共有したりするときに使う ただ、@ImportではConfigurationを、@Compone…

【OkHttp】readTimeoutを設定する

OkHttpを使って、あるサービスのAPIに接続しているところでソケットタイムアウトを起こしていた java.net.SocketException: Socket closed 根本原因はまだ不明だが、一旦タイムアウト値を延ばすようにしてみる square.github.io デフォルトは10秒 OkHttpClie…

【Vavr】Javaの関数型ライブラリVavrのflapMap

現在、VavrというJavaの関数型ライブラリを使っているので、このVavrの使い方メモ 今回はflapMapについて こちらの記事が参考になったので個人的なまとめ blog.softwaremill.com flatMapは平坦化する mapとのおおまかな違いは map(T -> R)は、Tのデータ型をR…

【Elasticsearch】JavaでMulti-Search APIを使う

JavaでMulti-Search APIを使いたい www.elastic.co MultiSearchRequestインスタンスを用意して、通常のSerachRequestをaddしていけばよさそう MultiSearchRequest multiSearchRequest = new MultiSearchRequest(); SearchRequest firstSearchRequest = new S…

【Vavr】Javaの関数型ライブラリVavrのOption

現在、VavrというJavaの関数型ライブラリを使っているので、このVavrの使い方メモ 今回はOptionだけ www.vavr.io io.vavr.control.Option Optionはオブジェクトの参照がnullかもしれないことを明示的に表せるようにしたクラス オブジェクトをOptionでラップ…