UGA Boxxx

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

Spring Boot

【Spring Boot】Apollo3が利用できなかった話

Spring Boot にApollo Clientを導入しようとした際に、Apolloのバージョンがv2系とv3系があることがわかり、当初v3系にしようとしていたがうまくいかなかった uga-box.hatenablog.com 前提としてSpring Boot は2.5.12を使っていて、古いのは承知しているが今…

【Spring Boot】GraphQL Apollo Client でリクエスト時にヘッダーにAuth情報を含めたい

以前セットアップしたApollo Client でリクエスト時にヘッダーにAuth情報を含めたい uga-box.hatenablog.com 設定方法は以下に書かれている 10. Authenticate your queries - Apollo GraphQL Docs Kotlin用をJavaに読み替えて、以下のように書くけば良さそう…

【Spring Boot】Spring Boot でGraphQL Apolloクライアントを使う

Spring Boot でGraphQLで構築された外部のAPIを利用するため、GraphQLクライアントを用意する GraphQLクライアントには Apollo や Relay が思いつくが、RelayはどちらかというとReact特化でApolloのようにさまざまな言語で使えるようになっていないとのこと …

【Spring Boot】AutoConfiguration おさらい

何気なく使っていた Spring Boot の AutoConfiguration をおさらいする https://docs.spring.io/spring-boot/docs/2.5.x/reference/html/using.html#using.auto-configuration AutoConfigurationとは自分でBean実装をしなくても、 jarの依存関係に基づいて S…

【MyBatis】spring-bootで2つのデータソースを利用する

spring-bootでMyBatisを使っていて、MyBatisを利用する時だけ別のデータソースを利用したい場合にどうやるのかわかったのでメモ 元々1つのデータソースを利用する場合は以下のようにapplication.yamlでプロパティの定義をしていたのだが、 spring: datasour…

【Spring Boot】 JSONでのリクエストを受け取れるようにする

Spring BootでJSONでのリクエストを受け取れるようにしたい やり方は以下で、 @PostMapping(path = "/save", consumes = MediaType.APPLICATION_JSON_VALUE) HttpStatus save(@RequestBody RequestDto dto) { @PostMapping("/save")としていたところを、上記…

【Spring Boot】@Asyncアノテーション

Javaのアプリケーションで非同期処理を実装して、パフォーマンスを向上したい この時@Asyncアノテーションを知ったので調べた @Asyncアノテーションは、JavaのSpring Bootフレームワークで非同期処理を実装する際に使用される これを使用すると、メソッドが…

【Jackson】ObjectMapperであるクラスだけ別のPropertyNamingStrategiesにしたい

カスタマイズしたJackson2ObjectMapperBuilderを介して、ObjectMapperを独自の設定にすることができた これでどこで使っても同じ設定になるわけだが、悲しいことにある外部APIのレスポンスだけ期待とは違うことに気づいた 具体的にはプロパティ名がLOWER_CAM…

【Spring Boot】Jackson2ObjectMapperBuilderCustomizerでObjectMapperBuilderをカスタマイズする

ObjectMapperをカスタマイズするためにJackson2ObjectMapperBuilderを使う場合、以下の設定がデフォルトで無効になっている MapperFeature.DEFAULT_VIEW_INCLUSION DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES SerializationFeature.WRITE_DATES_AS_…

【Spring Boot】Jackson2ObjectMapperBuilderでObjectMapperをカスタマイズする

JacksonのObjectMapperをカスタマイズしたいのでやり方を調べた Bean登録して、@Primaryアノテーションをつける 一番シンプルな方法 @Bean @Primary public ObjectMapper objectMapper() { JavaTimeModule module = new JavaTimeModule(); module.addSeriali…

【Spring Boot】AutoConfigureで特定のライブラリがクラスパス上に存在する場合に適用するようにしたい

Spring BootのAutoConfigureでライブラリを作る際に、特定のライブラリがクラスパス上に存在する場合にBean定義した設定を適用するようにしたい AutoConfigureとは 3rdパーティライブラリなどに対して、ある設定をした上でSpring上で利用したい場合に、それ…

【Spring Boot】@Configurationアノテーションの(proxyBeanMethods = false)とは

Springの以下のアノテーションの使い方がわからなかったので調べた @Configuration(proxyBeanMethods = false) これはBean Lite Modeと呼ばれるものらしく、CGLIB proxy を明示的に利用せずBean登録する設定らしい CGLIBとは、プログラムのコンパイル後にク…

【Spring Boot】 2.4 系でプロファイルの挙動が変わった

Spring Boot 2.4.X にバージョンアップしたらビルド時にエラーが発生した 具体的には次のような構成で、 └── src ├── main │ └── resources │ ├── application.yml │ ├── application-development-include.yml │ ├── application-development.yml applicatio…

【Jib】 コンテナ起動時にコマンドライン引数を指定したい

Spring Boot起動時に環境毎にapplication.propertiesを切り替える場合、コマンドライン引数を以下のようにしている java -jar spring-boot-application-properties-sample-1.0.0.jar --spring.profiles.active=dev1 これをjibで固めたコンテナの起動時に指定…

【Doma】Spring Boot アプリケーションからPostgresに接続する

Domaを使ってSpring Boot アプリケーションからPostgresに接続する ドキュメントは以下 springboot-domamaster-maintenance-sample.readthedocs.io 手順はREADMEがわかりやすい github.com pomの設定は終えた上で Entityを作る package com.sample.doma; imp…

【Spring Boot】Redisを使う

Cloud Tasksを使っていて、実行されたタスクにエラーが発生した場合は再実行キューにはいる設定にしている ただ、前回の実行した時のエラーが起こるまでの処理が再実行時には最初から始まってしまっていて、処理が重複してしまっているものがあった そこで、…

【Spring Boot】HikariCPとは?

HikariCPというワードを目にしたので調べた 検索したら一番最初にでてきたので参考にした openstandia.jp HikariCP(ヒカリシーピー)は、高速かつ軽量なJDBCコネクションプールのライブラリです。現時点では、Javaで実装されたコネクションプールのライブラ…

【Spring Boot】@ConfigurationProperties

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

【Spring Boot】起動時にDB接続に失敗する

Spring Boot起動時に以下のエラーが発生してしまい、ハマったのでメモ postgres Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 結論 ライブラリーがクラスパスにないことが原因だっ…